从未排序的链表中移除重复元素:不是去重

1836. 从未排序的链表中移除重复元素

思路:

  • 使用:虚拟头结点
  • 使用 链表分解的技巧
/**
 * @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;
};