其他分享
首页 > 其他分享> > 力扣 面试题 02.01. 移除重复节点

力扣 面试题 02.01. 移除重复节点

作者:互联网

题目

编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。

示例

输入:[1, 2, 3, 3, 2, 1]
输出:[1, 2, 3]

输入:[1, 1, 1, 1, 2]
输出:[1, 2]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicate-node-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1

利用hashset来判别是否重复出现

Java实现
class Solution {
    public ListNode removeDuplicateNodes(ListNode head) {
        ListNode dummy = new ListNode();
        dummy.next = head;
        Set<Integer> set = new HashSet<>();

        ListNode pre = dummy;
        ListNode cur = head;

        while (cur != null) {
            ListNode tmp = cur.next;
            if (set.contains(cur.val)){
                pre.next = cur.next;
                cur = tmp;
            } else {
                set.add(cur.val);
                pre = cur;
                cur = tmp;                
            }
        }
        return dummy.next;
    }
}

在这里插入图片描述

标签:pre,dummy,面试题,set,ListNode,cur,02.01,next,移除
来源: https://blog.csdn.net/qq_42467009/article/details/122214963