面试题 02.01. 移除重复节点


面试题 02.01. 移除重复节点

难度简单 90
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
示例 1:
** 输入:[1, 2, 3, 3, 2, 1]
** 输出
:[1, 2, 3]

示例 2:
** 输入:[1, 1, 1, 1, 2]
** 输出
:[1, 2]

提示:

  1. 链表长度在[0, 20000]范围内。
  2. 链表元素在[0, 20000]范围内。

进阶:
如果不得使用临时缓冲区,该怎么解决?

     public ListNode removeDuplicateNodes(ListNode head) {
        if (head == null) {
            return head;
        }
        Set<Integer> occurred = new HashSet<Integer>();
        occurred.add(head.val);
        ListNode pre = head;
        // 枚举前驱节点
        while (pre.next != null) &#123;
            // 当前待删除节点
            ListNode cur = pre.next;
            if (occurred.add(cur.val)) &#123;
                pre = cur;
            &#125; else &#123;
                pre.next = cur.next;
            &#125;
        &#125;
        pre.next = null;
        return head;
    &#125;

文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
剑指 Offer 56 - I. 数组中数字出现的次数--🀄️ 剑指 Offer 56 - I. 数组中数字出现的次数--🀄️
剑指 Offer 56 - I. 数组中数字出现的次数难度中等 312一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n),空间复杂度是 O(1)。 示例 1:输入:
下一篇 
15. 三数之和--🀄️ 15. 三数之和--🀄️
15. 三数之和难度中等 3030给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 _a + b + c = _0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组
  目录