演算法之鍊錶回文鍊錶判斷

2021-10-07 11:22:52 字數 999 閱讀 2748

問題描述

編寫乙個函式,檢查輸入的鍊錶是否是回文的。

示例:

輸入: 1->2

輸出: false

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

輸出: true

方法一
/**

* 要求時間複雜度為o(n),空間複雜度為o(1)

*1.獲取中間位置

* 獲取中間位置,可以通過快慢指標實現

*2.從中間位置一次向兩側對比

* 從中間向兩側對比,需要將左半部分進行翻轉,才能夠實現

*/public

boolean

ispalindrome

(listnode head)

//1.獲取中間位置

//獲取中間位置,可以通過快慢指標實現

listnode slow = head;

listnode fast = head;

//左側鍊錶翻轉後的頭部

listnode pre = null;

while

(fast!=null&&fast.next!=null)

listnode right;

//判斷當前的鍊錶長度是奇數還是偶數

//1->2->3 如果fast有值,則為奇數長度.pre 指向1 ,slow指向2,那麼需要right指向3即可

//1->2->3->4 如果fast有值,則為奇數長度.pre 指向2,slow指向3,那麼需要right=slow即可

if(fast!=null)

else

//2.從中間位置一次向兩側對比

//從中間向兩側對比,需要將左半部分進行翻轉,才能夠實現

while

(right!=null&&pre!=null)

right = right.next;

pre = pre.next;

}return

true

;}

鍊錶 (判斷回文鍊錶)演算法

coding utf 8 author leadingme mail leadingme qq.com mywebsite leadingme.top 回文鍊錶 演算法要求 判斷乙個鍊錶是否為回文鍊錶 示例1 輸入 1 2 輸出 false 示例2 輸入 1 2 2 1 輸出 true class ...

鍊錶回文判斷

判斷一條單向鍊錶是不是 回文 回文,英文palindrome,指順著讀和反過來讀都一樣。判斷回文單向鍊錶跟判斷回文字串很大的區別就是遍歷。字串可以自由向前遍歷,而單向字串不行,因此最簡單直觀的思路就是將鍊錶翻轉,然後再進行比較。但是這種方法就比較笨,因為還需要建立另外乙個單鏈表來儲存原有的單鏈表,然...

判斷回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。鍊錶為單向無環鏈表 示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 這題是讓判斷鍊錶是否是回文鍊錶,所謂的回文鍊錶就是以鍊錶中間為中心點兩邊對稱。我們常見的有判斷乙個字串是否是回文字串,這個比較簡單,可以使用兩個指標,乙個最左邊...