leetcode 234 回文鍊錶

2021-10-12 08:00:22 字數 973 閱讀 1869

題目描述

基本思路

1、利用快慢指標,快指標每次走兩步,慢指標每次走一步,找到鍊錶中點。

2、把後半部分逆序。

3、比較前後兩部分。

奇數長度的鍊錶和偶數長度的鍊錶操作不同點:

查詢中點:奇數鍊錶結束時,以fast->next

為空結束;偶數鍊錶以fast

為空結束。

逆序:**實現中沒有把前半部分鍊錶最後乙個元素的next

指標設為空。結果是偶數鍊錶前半部分煉錶比後半部分鍊錶長度多1。

// slow指標指向中點

listnode *first = slow;

listnode *second = first-

>next;

// 逆序後半部分

while

(second)}

slow-

>next =

nullptr

; listnode* head2 = first;

while

(head && head2)

return

true

;}敲黑板、記筆記

回文,順序、逆序讀結果相同。

單向鍊錶可以順序讀,無法逆序讀。

提到逆序,應該自然可以聯想到棧,再聯想到遞迴。

題目要求空間複雜度為o(1),答案自然是遞迴。

LeetCode 234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。definition for singly linked list.struct listnode bool ispalindrome struct listnode head 示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 要...

leetcode 234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false 示例 2 輸入 1 2 2 1輸出 true 解法1 使用棧 使用快慢指標找中點,原理是每次快指標走兩步,慢指標走一步,等快指標走完時,慢指標的位置就是中點。我們還需要用棧,每次慢指標走一步,都把值存入棧中,等到達中點時,鍊錶的前...

LeetCode 234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。解題思路 根據 o n 時間複雜度和 o 1 空間複雜度的要求,則不能使用堆疊。首先找到中間節點,然後反轉中間節點之後的節點,最後比較頭結點和中間節點之後元素的大小。bool solution ispalindrome listnode head 1.找到鍊錶的中間位置...