Skip to content

力扣链接:82.删除排序链表中的重复元素 II

难度:⭐⭐

解题关键词:指针

解题思路:使用一个假的头部指针,然后判断指针的后面和后面的后面是否都存在,都存在的话判断两个值是否相等,如果相等,就一直往后移动,过滤掉所有相等的节点

typescript
var deleteDuplicates = function (head) {
  if (!head) {
    return head;
  }

  // 假头部
  const dummy = new ListNode(0, head);

  let cur = dummy;

  // 判断指针的后面和后面的后面是否都存在
  while (cur.next && cur.next.next) {
    // 如果两个值相等
    if (cur.next.val === cur.next.next.val) {
      // 一直往后移动,把相等的元素都过滤掉
      const x = cur.next.val;
      while (cur.next && cur.next.val === x) {
        cur.next = cur.next.next;
      }
    } else {
      cur = cur.next;
    }
  }
  return dummy.next;
};