Leetcode刷題日記之回文鍊錶

2021-10-01 16:58:07 字數 895 閱讀 8598

回文鍊錶

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

示例 1:

輸入:1->2輸出:false
示例 2:

輸入:1->2->2->1輸出:true
高階:

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

首先解決這個問題的第一步,一定需要使用到快慢指標fast和slow,找到鍊錶中點,並在前進過程中將鍊錶的一半進行反轉,具體方法和反轉鍊錶一題思路相同,借助了初始值為null的pre節點。

然後根據快指標的位置判斷鍊錶節點個數,如果是單數,slow多走一步,跳過中間節點,向兩頭開始比較對應位置的節點值val;如果是雙數,則直接開始比較反轉後兩半鍊錶對應位置的val值。

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution

/**************************===判斷鍊錶節點個數**************************/

if(fast!=null)

/***********====開始比較對應位置的值是否相等,從而判斷是否是回文鍊錶**********==*/

while(pre!=null&&slow!=null)

slow=slow.next;

pre=pre.next;

}return true;

}}

LeetCode刷題日記 409 最長回文串

在構造過程中,請注意區分大小寫。比如 aa 不能當做乙個回文字串。注意 假設字串的長度不會超過 1010。示例 1 輸入 abccccdd 輸出 7 解釋 我們可以構造的最長的回文串是 dccaccd 它的長度是 7。解析 統計每個字元的個數即可,雙數才能構成回文串。如果剛好都兩兩成對,那麼回文串長...

leetcode 刷題日記

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。採用乙個帶頭節點的指標head鏈結合併後的新指標,乙個空指標pre進行迴圈載入兩個鍊錶中的節點比較兩個鍊錶節點的值,pre指標鏈結較小值的鍊錶的節點,依次遍歷兩個鍊錶,直到乙個為空停止迴圈。複雜度分析 時間複...

leetcode 刷題日記

題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。解題思路 按照最長鍊錶的長度遍歷兩個...