面试题 02.01. 移除重复节点

面试题 02.01. 移除重复节点 #

题目 #

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

思路 #

代码 #

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}
class Solution {
    public ListNode removeDuplicateNodes(ListNode head) {
        if (head == null) return null;
        HashSet<Integer> record = new HashSet<>();
        ListNode ptr = head;
        while (ptr.next != null) {
            record.add(ptr.val);
            if (record.contains(ptr.next.val)) ptr.next = ptr.next.next;
            else ptr = ptr.next;
        }
        return head;
    }
}