234 回文鍊錶

2021-10-21 02:38:31 字數 1385 閱讀 8758

回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。

示例 1:

輸入: 1->2

輸出: false

示例 2:

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

輸出: true

高階:你能否用 o(n) 時間複雜度和 o(1) 空間複雜度解決此題?

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*/// 解法

一、遞迴,鍊錶後續遍歷,逐個節點比較,時空均為o(n)

// class solution

// public boolean ispal(listnode right)

// boolean res = ispal(right.next);

// res = res && (left.val == right.val);

// left = left.next;

// return res;

// }

// }

// 解法

二、迭代,先找到中間節點讓後一半反轉

// class solution

// left = left.next;

// right = right.next;

// }

// return true;

// }

// listnode findmidnode(listnode head)

// return slow;

// }

// listnode reverse(listnode head)

// return pre;

// }

// }

// 解法

三、迭代,找到中間節點的同時讓前一半鍊錶反轉

// 快慢指標,慢指標反轉鍊錶(反轉後鍊表頭為pre),另一半煉表頭為slow,進行逐節點比對

class

solution

if(fast != null)

while

(slow != null)

slow = slow.next;

pre = pre.next;

}return

true;}

}

234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false示例 2 輸入 1 2 2 1輸出 true首先建立兩個指標指向鍊錶,然後使其中乙個指標指向鍊錶中間,這裡可以使用另乙個指標快速移動,當另乙個指標移動速度是前一根指標的一倍時,就可以使slow指標到一半,而fast指標遍歷完了。使用...

234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?正確思路是1.先找到鍊錶的中點 通過快慢雙指標,快指標一次移動兩個單位,慢指標一次移動乙個單位,當快指標頂到頭的時...

234回文鍊錶

題目描述 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 題解思路 首先反思一下,我這一題的第一想法是將整個鍊錶反轉,然後和原鍊錶同步遍歷,全部相同便是回文鍊錶,但是發現,你在反轉鍊錶的時候,原鍊錶被破壞了,所以第一次失敗。然後...