234 回文鍊錶

2022-08-11 05:18:14 字數 790 閱讀 7850

2020-04-20

回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。

題解:思路1:陣列記錄值+雙指標判斷

var ispalindrome = function

(head)

} fn(head);

let i = 0, j = valarr.length - 1;

while (i

return

true

;};

思路2:快慢雙指標翻轉前半鍊錶

//

注意://

奇數偶數的情況略有不同,奇數情況下,在判斷值是否相同時 head 要往後走一位。

//例如:

//奇數:1 -> 2 -> 3 -> 2 -> 1

//遍歷完成後:head = 3 -> 2 -> 1

//reversed = 2 -> 1

//偶數:1 -> 2 -> 2 -> 1

//遍歷完成後:head = 2 -> 1

//reversed = 2 -> 1

var ispalindrome = function

(head)

if (doublehead) head = head.next; //

如果為奇數,head應該再進一

while (head)

return

true

;}

234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false示例 2 輸入 1 2 2 1輸出 true首先建立兩個指標指向鍊錶,然後使其中乙個指標指向鍊錶中間,這裡可以使用另乙個指標快速移動,當另乙個指標移動速度是前一根指標的一倍時,就可以使slow指標到一半,而fast指標遍歷完了。使用...

234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?正確思路是1.先找到鍊錶的中點 通過快慢雙指標,快指標一次移動兩個單位,慢指標一次移動乙個單位,當快指標頂到頭的時...

234回文鍊錶

題目描述 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 題解思路 首先反思一下,我這一題的第一想法是將整個鍊錶反轉,然後和原鍊錶同步遍歷,全部相同便是回文鍊錶,但是發現,你在反轉鍊錶的時候,原鍊錶被破壞了,所以第一次失敗。然後...