# 83. 删除排序链表中的重复元素
# 题目
存在一个按升序排列的链表,给你这个链表的头节点 head
,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表
# 题解
# 遍历
// 简洁版
var deleteDuplicates = function(head) {
var x = head;
while (x != null) {
if (x.next == null) break;
if (x.val == x.next.val) {
x.next = x.next.next;
} else {
x = x.next;
}
}
return head;
};
// 理解版
var deleteDuplicates = function(head) {
if (!head) return head;
let preHead = new ListNode(0);
preHead.next = head;
let pre = head;
let cur = head.next;
while (cur) {
if (cur.val !== pre.val) {
pre = pre.next;
cur = cur.next;
} else {
pre.next = cur.next;
cur = pre.next;
}
}
return preHead.next;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32