leetcode 234. 回文链表
程序员文章站
2022-04-17 15:51:24
...
题目
思路
快慢指针找到链表的中间值,同时利用慢指针将前半段数据存在list中。
快指针到结尾后,慢指针恰好到中间,这样一边出栈,一边用慢指针继续遍历剩余的链表即可。
题解
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isPalindrome(ListNode head) {
Stack<Integer> stack = new Stack();
ListNode fast = head;
ListNode slow = head;
while(fast!=null){
stack.push(slow.val);
if(fast.next != null){
slow = slow.next;
fast=fast.next.next;
}else break;
}
while(!stack.isEmpty()){
if(slow.val!=stack.pop()){
return false;
}else{
slow=slow.next;
}
}
return true;
}
}
上一篇: 2. 两数相加