鍊錶回文問題

2021-10-06 23:13:49 字數 1239 閱讀 6358

//方法一,利用乙個棧

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...