常見單鏈表題型(八)鍊錶的回文結構

2021-09-28 19:22:06 字數 1034 閱讀 6830

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

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

示例:輸入:1->2->2->1

輸出:是

/*

struct listnode

};*/

方法一:

將鍊錶儲存在陣列裡,再首尾判斷,空鍊錶也是回文鍊錶,另外分配了空間,空間複雜度不為常數,此處不做贅述

方法二:

逆置後半部分鍊錶,前半部分鍊錶指向空,後半部分逆置鍊錶指向空,進行比較,逆置時先找到中間位置,再逆置後半部分鍊錶,逆置後返回後半部分逆置後第乙個元素

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

輸出:是

過程顯示:

方法二:

方法二:

classpalindromelist

elseif(a

->next ==

null

)//快慢指標找出中間節點

listnode* fast =a;

listnode* slow =a;

while

(fast !=

null

&& fast-

>next !=

null

)//將中間節點後的指標反轉

listnode* p = slow-

>next;

listnode* p1 = slow-

>next-

>next;

while

(p !=

null

)//從頭、尾指標向中間遍歷,判斷a是否是回文

while(a

!= slow)

elsea=

a->next;

slow = slow-

>next;}}

return

true;}

};

鍊錶回文結構

對於乙個鍊錶,請設計乙個時間複雜度為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 慢的依次存入棧 ...