微商怎么做_和淘宝网站一样吗?,像京东一样的网站,前台书写文章wordpress,关于网络营销的方法如何判断回文链表
题目描述 给你一个单链表的头节点 head #xff0c;请你判断该链表是否为回文链表。如果是#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。 示例 1#xff1a; 输入#xff1a;head [1,2,2,1]
输出#xff1a;true示例 2#xff1a;…如何判断回文链表
题目描述 给你一个单链表的头节点 head 请你判断该链表是否为回文链表。如果是返回 true 否则返回 false 。 示例 1 输入head [1,2,2,1]
输出true示例 2 输入head [1,2]
输出false提示
链表中节点数目在范围[1, 105] 内0 Node.val 9
解题思路及代码 使用快慢指针法找到链表的中间节点快指针每次走两步慢指针每次走一步当快指针到达链表尾部时慢指针恰好到达中间节点。 根据是否有偶数个节点将慢指针指向下一个节点以确保慢指针指向后半部分链表的起始节点。 将后半部分链表反转。 逐一比较前半部分链表和反转后的后半部分链表的节点值如果全部相同则链表是回文的否则不是。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {boolean isPalindrome(ListNode head) {ListNode slow, fast;slow fast head;while (fast ! null fast.next ! null) {slow slow.next;fast fast.next.next;}if (fast ! null)slow slow.next;ListNode left head;ListNode right revese(slow);while (right ! null) {if (left.val ! right.val)return false;left left.next;right right.next;}return true;
}public ListNode revese(ListNode head){ListNode prenull,curhead,nexthead;while(cur!null){nextcur.next;cur.nextpre;precur;curnext;}return pre;}
}
结果展示