用一个双端队列,将元素全部加入队列,然后判断队列首尾的元素是否相同,相同,队首队尾移出元素;不同并且队列里面不只有一个元素,说明不是。
import java.util.Deque;
import java.util.LinkedList;
class Solution {
public boolean isPalindrome(ListNode head) {
Deque<ListNode> deque = new LinkedList<>();
while(head != null){
deque.addLast(head);
head = head.next;
}
while(!deque.isEmpty()){
if(deque.peekFirst().val == deque.peekLast().val){
if(deque.size() == 1){
return true;
}
deque.pollFirst();
deque.pollLast();
}
else{
return false;
}
}
return true;
}
}
或者快慢指针找到中点,然后逆转一半链表,最后对比两个链表。