From 65901bdee41eb6071ca6c03209b114bcf562ffd4 Mon Sep 17 00:00:00 2001 From: jerryfishcode <91447694+jerryfishcode@users.noreply.github.com> Date: Mon, 27 Sep 2021 21:07:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20234.=20=E5=9B=9E=E6=96=87?= =?UTF-8?q?=E9=93=BE=E8=A1=A8=20JavaScript=20=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0234.回文链表.md | 36 ++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) 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; +}; ```