先找到中点,然后对后半部分反转,从头和中点进行比较是否相同
class Solution {
public boolean isPalindrome(ListNode head) {
ListNode slow = head, fast = head, prev = null;
while(fast.next != null && fast.next.next != null){
slow = slow.next;
fast = fast.next.next;
}
while(slow != null){
ListNode temp = slow.next;
slow.next = prev;
prev = slow;
slow = temp;
}
while(head != null && prev != null){
if(head.val != prev.val) return false;
head = head.next;
prev = prev.next;
}
return true;
}
}
本文介绍了一种用于判断链表是否为回文的有效算法。该算法首先寻找链表的中点,接着反转后半部分,并从前半部分与反转后的后半部分进行逐元素对比,以确定整个链表是否构成回文。
498

被折叠的 条评论
为什么被折叠?



