234 回文鍊錶

2021-09-27 06:57:41 字數 545 閱讀 8060

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

示例 1:

輸入: 1->2

輸出: false

示例 2:

輸入: 1->2->2->1

輸出: true

高階:你能否用 o(n) 時間複雜度和 o(1) 空間複雜度解決此題?

正確思路是1.先找到鍊錶的中點:通過快慢雙指標,快指標一次移動兩個單位,慢指標一次移動乙個單位,當快指標頂到頭的時候,慢指標的位置就是鍊錶的中點.

2.將中點後的鍊錶反轉.

3.挨個比較鍊錶的值.

listnode fast = head;

listnode slow = head;

while(fast!=null&&fast.next!=null)

//迭代結束後找到中點.即slow.

反**參照之前的反轉鍊錶題.

listnode pre = null;

while(slow!=null)

//反轉後挨個比較

while(slow!=null)

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 題解思路 首先反思一下,我這一題的第一想法是將整個鍊錶反轉,然後和原鍊錶同步遍歷,全部相同便是回文鍊錶,但是發現,你在反轉鍊錶的時候,原鍊錶被破壞了,所以第一次失敗。然後...

234 回文鍊錶

題目描述 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false示例 2 輸入 1 2 2 1 輸出 true解題思路 1 使用快慢指標找到鍊錶的的中間節點,並反轉鍊錶的前半部分 2 然後進行比較pre.val 中間向前找 和slow.val 中間向後找 若不相等,返回false 否...