LeetCode刪除排序連結串列中的重複元素的問題使用JavaScript解題|前端學演算法

語言: CN / TW / HK

highlight: an-old-hope theme: healer-readable


持續創作,加速成長!這是我參與「掘金日新計劃 · 10 月更文挑戰」的第11天,點選檢視活動詳情

有人相愛,有人夜裡開車看海,我是leetcode第一題都做不出來

這是leetcode的第83題:刪除排序連結串列中的重複元素

刪除排序連結串列中的重複元素

給定一個已排序的連結串列的頭 head , 刪除所有重複的元素,使每個元素只出現一次 。返回 已排序的連結串列 。

示例 1:

輸入: head = [1,1,2]

輸出: [1,2]

image.png

示例2:

輸入: head = [1,1,2,3,3]

輸出: [1,2,3]

解題思路

我們可以初始化一個節點,作為當前節點,用這個節點與下一個節點比較是否相同;如果相同,就令當前節點指向下下一個節點;如果不同就令當前節點指向下一個節點

image.png 具體步驟如下: - 第一步:初試話當前節點等於head - 第二步: 噹噹前節點存在且下一個節點存在則進入迴圈 - 判斷當前值與下一個節點的值是否相同 - 相同使當前節點指向下下一個節點 - 不同就讓當前節點指向下一個節點 - 第三步: 返回head js var deleteDuplicates = function(head) { let current = head while(current && current.next) { if(current.val == current.next.val) { current.next = current.next.next; } else { current = current.next; } } return head; }; image.png

知識點

  • 連結串列和陣列相似,它們都是有序的列表、都是線性結構(有且僅有一個前驅、有且僅有一個後繼)。不同點在於,連結串列中,資料單位的名稱叫做“結點”,而結點和結點的分佈,在記憶體中可以是離散的。

image.png

關於連結串列的一些簡單操作和基礎知識大家可以看這一片文章:棧,佇列和連結串列三者之間的關係與區別