本文主要是介绍关于找到链表中点时快慢指针的选取-剑指 Offer II 027. 回文链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
快指针的慢指针的两倍移动速度,如何在快指针遍历完链表后,慢指针刚好到达链表中部。
剑指 Offer II 027. 回文链表
利用到了快慢指针,不用对奇数情况单独加判断了。
var isPalindrome = function(head) {if(head.next==null){return true;}let dummy=new ListNode(0);dummy.next=head;let slow=dummy,fast=dummy.next;while(fast!=null){slow=slow.next;fast=fast.next;if(fast!=null){fast=fast.next;}}let lastnode=slow.next;slow.next=null;let node=reverseList(lastnode);while(node!=null){if(node.val!=head.val){return false;}node=node.next;head=head.next;}return true;
};var reverseList=function(node){let prev=null;let cur=node;while(cur!=null){let temp=cur.next;cur.next=prev;prev=cur;cur=temp;}// 注意不能返回node,因为此时头节点已经变成原来的尾节点了return prev;
}
这篇关于关于找到链表中点时快慢指针的选取-剑指 Offer II 027. 回文链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!