//方法一,利用乙個棧
public
boolean
ispalindrome
(node head)
while
(head!=null)
return
true
;}
方法二,對方法一的優化,同樣利用棧結構,壓入一半的節點
public
boolean
ispalindrome1
(node head)
stack
stack =
newstack
<
>()
;while
(right!=null)
while
(!stack.
isempty()
)return
true
;}
方法三,利用幾個變數,在空間複雜度o(1)內完成
public
boolean
ispalindrome2
(node head)
//右部分第乙個節點
n2 = n1.next;
-> null
n1.next = null;
node n3 = null;
//右半區進行反轉
while
(n2!=null)
//儲存一下最後乙個節點
n3 = n1;
//左邊第乙個節點
n2 = head;
boolean res =
true
;while
(n1!=null && n2!=null)
n1 = n1.next;
n2 = n2.next;
}//恢復鍊錶
n1 = n3.next;
n3.next = null;
while
(n1!=null)
return res;
}
測試
public
static
void
main
(string[
] args)
鍊錶 回文鍊錶
在leetcode上有兩個題 234.回文鍊錶 面試題 02.06.回文鍊錶 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?遍歷一遍鍊錶得到值的陣列 判斷陣列是...
初級 鍊錶 回文鍊錶
題目 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?思路 原思路 將鍊錶遍歷一遍,存入陣列,但空間複雜度為o n 不符合要求 正確思路 用快慢陣列找出鍊錶的中間...
leetcode 鍊錶 回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...