回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。
示例 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 開頭。解題思路 按照最長鍊錶的長度遍歷兩個...