从未排序的链表中移除重复元素:不是去重
思路:
- 使用:虚拟头结点
- 使用 链表分解的技巧
/**
* @param {ListNode} head
* @return {ListNode}
*/
var deleteDuplicatesUnsorted = function (head) {
let obj = {};
let p = head;
while (p) {
obj[p.val] = (obj[p.val] || 0) + 1;
p = p.next;
}
let d = new ListNode(-1);
d.next = head;
p = d;
while (p) {
let unique = p.next;
while (unique !== null && obj[unique.val] > 1) {
// 跳过重复节点,直到找到不重复的节点
unique = unique.next;
}
p.next = unique;
p = p.next;
}
return d.next;
};