wordpress防止垃圾邮件方法aso搜索优化
题目重述
请判断一个链表是否为回文链表。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
思路
- 快慢指针找到链表中点,同时将前半部分值放入栈中
- 根据判断快指针是否为空,可判断链表长度是奇数还是偶数
- 对后半部分进行遍历,在遍历的过程中,比较值,若出现不同则说明不是回文链表
Java实现
class Solution {public boolean isPalindrome(ListNode head) {Stack<Integer> stack = new Stack<>();// 快慢指针,找到链表中间结点ListNode p = head,q = head,s = head;while(q!=null && q.next!=null){stack.push(p.val);p = p.next;q = q.next.next;}// 如果 fast 指针没有指向 null ,说明链表⻓度为奇数, slow 还要再前进⼀步if(q!=null){p = p.next;}while(p!=null && !stack.empty()){int tmp = stack.pop();if(tmp!=p.val){return false;}p = p.next;}return true;}
}