美文网首页二叉树之下
单链表判断回文串(快慢指针)

单链表判断回文串(快慢指针)

作者: Boger_8cf1 | 来源:发表于2018-11-20 23:25 被阅读85次

最近从极客时间上买了一份数据结构与算法的课,正在学习当中。然后目前学到了链表这块,有个课后思考是 :用单链表实现回文串。
评论底下 人才辈出,我看了一个网友的评论,使用快慢指针的方法来进行实现算法。
https://github.com/andavid/leetcode-java/blob/master/note/234/README.md
我是从这个地方看到的代码,然后自己仔细分析之后与大家共享。
话不多说贴代码:
根据快慢指针, 判断以下 fast 是否为null,如果是奇数,fast不为null,slow 再迁移一位不用判断最中间的数,prev和slow的值比较即可。 例: a->b->c->b->a->null , 到比较之前队列变成null<-a<-b c->b->a->null 此时slow 是 c->b->a->null的b节点,prev 为 null<-a<-b的b节点,然后挨个对比即可。
如果是偶数,fast为null,slow不动,prev和slow的值比较即可。
例: a->b->c->c->b->a->null 到比较之前队列变成null<-a<-b<-c c->b->a->null 此时slow 是 c->b->a->null的c节点,prev 为 null<-a<-b<-c的c节点,然后挨个对比即可。

class Solution {
public boolean isPalindrome(ListNode head) {
if (head == null || head.next == null) {
return true;
}

ListNode prev = null;
ListNode slow = head;
ListNode fast = head;

while (fast != null && fast.next != null) {
  fast = fast.next.next;
  ListNode next = slow.next;
  slow.next = prev;
  prev = slow;
  slow = next;
}

if (fast != null) {
  slow = slow.next;
}

while (slow != null) {
  if (slow.val != prev.val) {
    return false;
  }
  slow = slow.next;
  prev = prev.next;
}

return true;

}
}

加上我自己的分析应该我觉得屏幕前的你可以看得懂了,看不懂也没关系也可以自己拿笔或者自己实现一遍,就可以加深印象了。 共勉。

相关文章

  • 单链表判断回文串(快慢指针)

    最近从极客时间上买了一份数据结构与算法的课,正在学习当中。然后目前学到了链表这块,有个课后思考是 :用单链表实现回...

  • 如果字符串是通过 `单链表` 来存储的,那该如何来判断是一个回文

    如果字符串是通过 单链表 来存储的,那该如何来判断是一个回文串呢? 通过快慢指针定位中间节点 从中间节点对后半部分...

  • 快慢指针的应用

    什么是快慢指针:快慢指针是链表操作中的常用操作,最经典的应用是判断单链表中是否有环。 判断单链表是否存在环 两个指...

  • 234. Palindrome Linked List

    判断一个链表是不是回文链表 获取链表的中点,根据快慢指针,将后半部分反转,然后从中点逐个比较。 Runtime: ...

  • 算法学习--双指针

    双指针分类 快慢指针 左右指针 快慢指针:主要解决链表相关问题,比如:典型的判断链表中是否包含环、链表倒是第K个节...

  • 数据结构面试题

    一、单链表、双链表、循环链表 二、快慢指针 1.判断是否有环 一个指针一步走2下,一个指针一步走1下如果两个指针相...

  • 快慢指针的应用

    快慢指针的快慢主要是指在遍历链表过程中指针移动速度的快慢。比如遍历单链表,我们可以让指针每次移动一个节点,也可以让...

  • 链表是否存在环的判断

    如何判断一个单链表是否存在环 快慢指针: 创建两个指针first,second指向头节点,first每次走一个结点...

  • 剑指 Offer II 027. 回文链表

    想着把链表转成数组 然后双指针判断是否回文

  • java判断链表是否有环(两种方式实现)

    判断链表是否为带环链表 方法一、快慢指针移动判断 首先如何判断链表是否有环,这个时候首先需要知道链表是否为空,如果...

网友评论

    本文标题:单链表判断回文串(快慢指针)

    本文链接:https://www.haomeiwen.com/subject/dpifqqtx.html