一種是直接將元素壓入棧 然後依次退棧和鍊錶相比
第二種是快慢指標,fast兩格一跳,slow 一格一跳。在後半壓入棧。與鍊錶相比
第三種 直接在後半段取反 比較完後還原
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
return p;
} bool ispalindrome
(listnode* head)
listnode *fast = head;
listnode *slow = head;
while
(fast-
>next != null && fast-
>next-
>next != null)
if(fast-
>next !=null)
listnode *newhead = slow-
>next;
slow-
>next = null;
newhead =
reverselist
(newhead)
; listnode *p = head;
listnode *q = newhead;
while
(p != null && q != null)
return
true;}
};
回文鍊錶 LeetCode
請判斷乙個鍊錶是否為回文鍊錶。你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?輸入 1 2 2 1 輸出 true 思路 如何判斷回文,從中間位置開始向兩邊不斷判斷相等並移動。關鍵點一 如何找到鍊錶中間位置。採用兩個指標,指標p移動兩格,指標mid移動一格,當p移動終點時,指標mid所在...
leetcode 回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false示例 2 輸入 1 2 2 1 輸出 true高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?查詢單鏈表中點 function findmid node let midnode node node node.ne...
LeetCode 回文鍊錶
題目 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 1 獲取鍊錶的長度 int length 0 listnode node head if null head.next elsewhile null node node.ne...