返回轨道
算法 · 2026-05-14 · 17 阅读

P74 有序链表删除重复节点

算法 17 阅读

信号摘要

难度:Medium · 时长:03:51 · leetcode 82 · lintcode 113

P74 有序链表删除重复节点

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个单链表,这个单链表节点上的数字是有序的。对于出现多次的数字,你要把它们全删掉,留下只出现一次的节点,最后返回处理后的单链表。

比如说,给你的有序单链表是:

1 -> 1 -> 2 -> 4

1 出现了多次,删掉它后,你要返回的链表是:

2 -> 4

代码

public class AlgoCasts {

  public class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
      val = x;
    }
  }

  // Time: O(n), Space: O(1)
  public ListNode removeDuplicatesInSortedList(ListNode head) {
    ListNode dummy = new ListNode(0);
    dummy.next = head;
    ListNode prev = dummy, cur = prev.next;
    while (cur != null) {
      while (cur.next != null && cur.val == cur.next.val) cur = cur.next;
      // update prev
      if (prev.next != cur) prev.next = cur.next;
      else prev = prev.next;
      // update cur
      cur = prev.next;
    }
    return dummy.next;
  }

}

📡 通讯频道