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