82. Remove Duplicates from Sorted List II
Leetcode
https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/
題目
Given the head of a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. Return the linked list sorted as well.
Example 1:

Input: head = [1,2,3,3,4,4,5]
Output: [1,2,5]Example 2:

Input: head = [1,1,1,2,3]
Output: [2,3]解答
方法一
var deleteDuplicates = function(head) {
let dummy = new ListNode(0);
dummy.next = head;
let lastNode = dummy;
let isSame = false;
while(head) {
// 如果 next === null,會跑下面的 else,把 lastNode -> null
if(head.next?.val === head.val) {
// 刪除下一個重複的數
isSame = true;
head.next = head.next.next;
} else {
if(isSame) {
// 將所有重複的數都略過
lastNode.next = head.next;
isSame = false;
} else {
// 之前沒有刪除過重複的數,lastNode 跟 head 一樣都往前一步
lastNode = head;
}
head = head.next;
}
}
return dummy.next;
};Runtime: 138 ms, faster than 14.63% of JavaScript online submissions for Remove Duplicates from Sorted List II.
Memory Usage: 40.6 MB, less than 50.12% of JavaScript online submissions for Remove Duplicates from Sorted List II.
測資
let head = [1, 1]; // null
head = [1, 2, 2]; // [1]Last updated
Was this helpful?