鍊錶的回文結構

2021-09-27 16:44:08 字數 1049 閱讀 1363

題目描述:

對於乙個鍊錶,請設計乙個時間複雜度為o(n),額外空間複雜度為o(1)的演算法,判斷其是否為回文結構。

給定乙個鍊錶的頭指標a,請返回乙個bool值,代表其是否為回文結構。保證鍊錶長度小於等於900。

測試樣例:

1->2->2->1

返回:true

思路:我們先得到原鍊錶的長度,得到它的一半長度。然後建立乙個工作指標,指向長度一半的位置(這裡我們不需要將長度分為奇偶看待,因為奇數時,就會剛好指向最中間位置,偶數時就會指向中間偏後的位置,例:1223,就會指向第二個 2 的節點的位置)。然後我們建立乙個新的鍊錶,從工作節點的位置,採用頭插法插入到新的節點中,然後將新的鍊錶和原來的鍊錶進行比較,看是否時回文鍊錶。

具體**實現如下:

public

class

palindromelist

else

if(a.next == null)

//得到鍊錶長度

int len =

size

(a);

//b用來指向鍊錶中間節點位置

listnode b = a;

for(

int i =

0; i < len /

2; i++

) listnode newhead =

newlistnode(-

1);//頭插法

while

(b != null)

//進行比較

while

(newhead != null)

newhead = newhead.next;

a = a.next;

}return

true;}

public

intsize

(listnode a)

return size;

}}

測試結果如下:

鍊錶回文結構

對於乙個鍊錶,請設計乙個時間複雜度為o n 額外空間複雜度為o 1 的演算法,判斷其是否為回文結構。給定乙個鍊錶的頭指標head,請返回乙個bool值,代表其是否為回文結構。思路 實現 public class palindromelist 此時slow位於鍊錶中間,開始反轉鍊錶slow後面的部分 ...

鍊錶回文結構

對於乙個鍊錶,請設計乙個時間複雜度為o n 額外空間複雜度為o 1 的演算法,判斷其是否為回文結構。給定乙個鍊錶的頭指標a,請返回乙個bool值,代表其是否為回文結構。保證鍊錶長度小於等於900。測試樣例 1 2 2 1返回 true解題思路 1 找到鍊錶的中點,2 翻轉後半部分的鍊錶節點 3 依次...

鍊錶的回文結構

題目描述 對於乙個鍊錶,請設計乙個時間複雜度為o n 額外空間複雜度為o 1 的演算法,判斷其是否為回文結構。給定乙個鍊錶的頭指標a,請返回乙個bool值,代表其是否為回文結構。保證鍊錶長度小於等於900。測試樣例 1 2 2 1 返回 true 大體思路 通過快慢指標法得到mid 慢的依次存入棧 ...