LeetCode刪除排序鏈表中的重複元素的問題使用JavaScript解題|前端學算法
highlight: an-old-hope theme: healer-readable
持續創作,加速成長!這是我參與「掘金日新計劃 · 10 月更文挑戰」的第11天,點擊查看活動詳情
有人相愛,有人夜裏開車看海,我是leetcode第一題都做不出來
這是leetcode的第83題:刪除排序鏈表中的重複元素
刪除排序鏈表中的重複元素
給定一個已排序的鏈表的頭 head
, 刪除所有重複的元素,使每個元素只出現一次 。返回 已排序的鏈表 。
示例 1:
輸入: head = [1,1,2]
輸出: [1,2]
示例2:
輸入: head = [1,1,2,3,3]
輸出: [1,2,3]
解題思路
我們可以初始化一個節點,作為當前節點,用這個節點與下一個節點比較是否相同;如果相同,就令當前節點指向下下一個節點;如果不同就令當前節點指向下一個節點
具體步驟如下:
- 第一步:初試話當前節點等於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;
};
知識點
鏈表
和數組相似,它們都是有序的列表、都是線性結構(有且僅有一個前驅、有且僅有一個後繼)。不同點在於,鏈表中,數據單位的名稱叫做“結點”,而結點和結點的分佈,在內存中可以是離散的。
關於鏈表的一些簡單操作和基礎知識大家可以看這一片文章:棧,隊列和鏈表三者之間的關係與區別
「其他文章」