diff --git a/problems/0234.回文链表.md b/problems/0234.回文链表.md index 631d2f6b..c93e534e 100644 --- a/problems/0234.回文链表.md +++ b/problems/0234.回文链表.md @@ -284,7 +284,41 @@ class Solution: ## JavaScript ```js - +var isPalindrome = function(head) { + const reverseList = head => {// 反转链表 + let temp = null; + let pre = null; + while(head != null){ + temp = head.next; + head.next = pre; + pre = head; + head = temp; + } + return pre; + } + // 如果为空或者仅有一个节点,返回true + if(!head && !head.next) return true; + let slow = head; + let fast = head; + let pre = head; + while(fast != null && fast.next != null){ + pre = slow; // 记录slow的前一个结点 + slow = slow.next; + fast = fast.next.next; + } + pre.next = null; // 分割两个链表 + // 前半部分 + let cur1 = head; + // 后半部分。这里使用了反转链表 + let cur2 = reverseList(slow); + while(cur1 != null){ + if(cur1.val != cur2.val) return false; + // 注意要移动两个结点 + cur1 = cur1.next; + cur2 = cur2.next; + } + return true; +}; ```