# 82. 删除排序链表中的重复元素 II
// 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
// 返回同样按升序排列的结果链表。
var deleteDuplicates = function(head) {
if (head === null || head.next === null) return head
const obj = {}
while (head) {
if (obj[head.val]) {
obj[head.val] += 1
} else {
obj[head.val] = 1
}
head = head.next
}
const prevRes = { next: null }
let res = prevRes
Object.keys(obj)
.sort((a, b) => +a - b)
.forEach((key) => {
if (obj[key] === 1) {
res.next = { val: key, next: null }
res = res.next
}
})
return prevRes.next
}
// console.log(
// deleteDuplicates({
// val: 1,
// next: {
// val: 2,
// next: {
// val: 3,
// next: {
// val: 3,
// next: {
// val: 4,
// next: {
// val: 4,
// next: {
// val: 5,
// },
// },
// },
// },
// },
// },
// })
// )
// console.log(
// deleteDuplicates({
// val: 1,
// next: {
// val: 1,
// next: null,
// },
// })
// )
console.log(
deleteDuplicates({
val: -3,
next: {
val: -1,
next: {
val: -1,
next: {
val: 0,
next: {
val: 0,
next: {
val: 0,
next: {
val: 0,
next: {
val: 0,
next: {
val: 2,
next: null,
},
},
},
},
},
},
},
},
})
)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92