leetcode 回文鍊錶

2021-10-05 14:47:23 字數 2937 閱讀 2078

問題描述:

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

解法一:

得到所有的值,轉換為判斷會問陣列

class

solution

:def

ispalindrome

(self, head: listnode)

->

bool

: ptr=head

val=

if(not head)

or head.

next

==none

:return

true

while

(ptr)

: ptr=ptr.

next

a=len(val)

if(a==2)

:if val[0]

==val[1]

:return

true

else

:return

false

print

(val[

0:a//2]

) b=val[ceil(a/2)

:a]print()

if(val[

0:a//2]

==b[::

-1])

:return

true

else

:return

false

這是把後半數組反轉判斷,可以省一點時間,也可以直接對全部陣列反**

開闢了陣列,空間複雜度o(n),時間複雜度o(n)。
解法二:快慢指標利用快慢指標把練鍊錶分為前半部分和後半部分,快慢指標的移動參考下圖

並且在慢指標移動的過程中進行前面鍊錶的反轉,可以節省時間。

解法三:棧利用棧先入後出的特性,可以判斷回文。

class

solution

p = head;

while

(p) s.

pop();

p = p-

>next;

}return1;}};

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false示例 2 輸入 1 2 2 1輸出 true高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?思路 利用快慢指標找到中間節點,當快指標走到末尾時,慢指標指向中間節點 交中間節點之後的節點進行鍊錶反轉 設定指標p1從h...

回文鍊錶 LeetCode

請判斷乙個鍊錶是否為回文鍊錶。你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?輸入 1 2 2 1 輸出 true 思路 如何判斷回文,從中間位置開始向兩邊不斷判斷相等並移動。關鍵點一 如何找到鍊錶中間位置。採用兩個指標,指標p移動兩格,指標mid移動一格,當p移動終點時,指標mid所在...