資料結構Day9

2021-10-03 15:42:43 字數 2125 閱讀 9078

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。

示例: 給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.

說明: 給定的 n 保證是有效的。

高階: 你能嘗試使用一趟掃瞄實現嗎?

總結: 最近這段時間太忙了,今天終於有時間可以坐下來繼續我的學習之旅,感覺要開心許多了,首先通過乙個鍊錶的中等題目作為回顧鍊錶知識吧。

拿到這個題目的第乙個想法就是得出鍊錶的長度,之後用刪除第l-n-1個節點即可,但是題目中要求只遍歷一次鍊錶。這個題目中非常巧妙的運用了雙指標的形式,從而實現時間複雜度為o(n),同時只遍歷了一遍鍊錶。具體的實現方法為,設定兩個指標變數,乙個指向第n個節點,另乙個保持頭節點,之後一直做迴圈,直到second節點指向了最後乙個節點時,此時first節點就會指向倒數第n個節點,之後對該節點做刪除操作即可。之後對鍊錶中可能出現了邊緣進行保護,即在用second遍歷的時候判斷n個節點之後是否會到鍊錶尾部,如果是的話再次進行判斷鍊錶是否只有乙個節點,這種情況下則需返回null,否則的話返回front->next就可以了。

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例:輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

總結在這個題目中,有序鍊錶的排序的邏輯不是很複雜,關鍵是如何避免記憶體溢位,指標跑飛的情況,最後在兩個鍊錶中有乙個鍊錶的值已經到頭之後,用兩個for迴圈賦值的操作可以做如下優化:

最後的結果可以看到有了很大的提高。得,又有事情要忙了,再見。

演算法和資料結構入門 Day9 實現排列組合

action9 排列組合 輸入乙個字串,輸出這個字串的所有排列,並刪除重複的情況 方法一 def permutation string result set if len string 0 return string charlist list string permutation charlist...

暑期訓練 day9

暑期訓練 day9 趙景樂今天主要解決之前沒a的 發現我犯下的都是一些小錯誤,只是當時太著急了沒有檢查出來。其餘的題目都是演算法上不好或者是沒什麼想法,還需要多看書,多答題來解決。今天的訓練賽題多時間長,相比於之前的小比賽出現了耐心不足的情況,兩小時半就有點心浮氣躁的了。還有就是這次新的輸入格式浪費...

實習日記 Day9

今天最大的感受是 how time flies!明天居然就是周五了,這一周也過得太快了吧 估計明天應該不會給我安排任務了 這一周,在我師傅的帶領下,我完成了兩個分給我的任務,還看著師傅做了乙個任務。果然,比起上週的 無所事事 這一周開始正式參與任務以後,總覺得時間過得飛快 明天開始,日記就要變成兩位...