83. 刪除排序鏈表中的重復(fù)元素

83. 刪除排序鏈表中的重復(fù)元素

給定一個排序鏈表,刪除所有重復(fù)的元素,使得每個元素只出現(xiàn)一次峭火。

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

方法1:遍歷

算法思路:

這是一個簡單的問題毁习,僅測試你操作鏈表的結(jié)點(diǎn)指針的能力。由于輸入的鏈表已排序卖丸,因此我們可以通過將結(jié)點(diǎn)的值與它之后的結(jié)點(diǎn)的值進(jìn)行比較確定它是否為重復(fù)結(jié)點(diǎn)纺且。如果它重復(fù),我們更改當(dāng)前結(jié)點(diǎn)的 next 指針稍浆,以便它跳過以下一個結(jié)點(diǎn)载碌,并指向下下個結(jié)點(diǎn)。

參考代碼1:

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null) {
            return head;
        }
        ListNode curr = head;
        while (curr != null && curr.next != null) {
            if (curr.val == curr.next.val) {
                curr.next = curr.next.next;
            } else {
                curr = curr.next;
            }
        }
        return head;
    }
}

復(fù)雜度分析:

  • 時間復(fù)雜度:O(n)衅枫,n 是鏈表中結(jié)點(diǎn)數(shù)嫁艇,因?yàn)殒湵碇忻總€結(jié)點(diǎn)都檢查一次以確定是否重復(fù)。
  • 空間復(fù)雜度:O(1)弦撩,沒有使用額外的空間步咪。

方法1:遞歸

算法思路:

  1. 找終止條件:當(dāng) head 指向鏈表只剩一個元素的時候,自然是不可重復(fù)的益楼,因此 return 猾漫;
  2. 想想應(yīng)該返回什么值:應(yīng)該返回的自然是已經(jīng)去重的鏈表的頭結(jié)點(diǎn)
  3. 遞歸每一步做什么:宏觀上考慮,此時 head.next 已經(jīng)指向一個去重的鏈表感凤,而根據(jù)第二步悯周,我應(yīng)該返回一個去重的鏈表的頭節(jié)點(diǎn)。因此這一步應(yīng)該做的是判斷當(dāng)前的 headhead.next 是否相等陪竿,如果相等則說明重復(fù)來禽翼,返回head.next,否則返回 head族跛。

參考代碼2:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        head.next = deleteDuplicates(head.next);
        if (head.val == head.next.val) {
            head = head.next;
        }
        return head;
    }
}

復(fù)雜度分析:

  • 時間復(fù)雜度:O(n)闰挡,n 是鏈表中結(jié)點(diǎn)數(shù),因?yàn)殒湵碇忻總€結(jié)點(diǎn)都檢查一次以確定是否重復(fù)礁哄。
  • 空間復(fù)雜度:O(n)解总,遞歸過程使用的棧空間姐仅。

以上謝謝大家,求贊求贊求贊刻盐!

?? 大佬們隨手關(guān)注下我的wx公眾號【一角錢小助手】和 掘金專欄【一角錢】 更多題解干貨等你來~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掏膏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子敦锌,更是在濱河造成了極大的恐慌馒疹,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乙墙,死亡現(xiàn)場離奇詭異颖变,居然都是意外死亡生均,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門腥刹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來马胧,“玉大人,你說我怎么就攤上這事衔峰∨寮梗” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵垫卤,是天一觀的道長威彰。 經(jīng)常有香客問我,道長穴肘,這世上最難降的妖魔是什么歇盼? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮评抚,結(jié)果婚禮上豹缀,老公的妹妹穿的比我還像新娘。我一直安慰自己盈咳,他們只是感情好耿眉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鱼响,像睡著了一般鸣剪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丈积,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天筐骇,我揣著相機(jī)與錄音,去河邊找鬼江滨。 笑死铛纬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唬滑。 我是一名探鬼主播告唆,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晶密!你這毒婦竟也來了擒悬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤稻艰,失蹤者是張志新(化名)和其女友劉穎懂牧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尊勿,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡僧凤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年畜侦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躯保。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡旋膳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吻氧,到底是詐尸還是另有隱情溺忧,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布盯孙,位于F島的核電站鲁森,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏振惰。R本人自食惡果不足惜歌溉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望骑晶。 院中可真熱鬧痛垛,春花似錦、人聲如沸桶蛔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仔雷。三九已至蹂析,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間碟婆,已是汗流浹背电抚。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竖共,地道東北人蝙叛。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像公给,于是被迫代替她去往敵國和親借帘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345