public ListNode deleteDuplicates (ListNode head) { // 创建set集合,集合内元素不重复 HashSet<Integer> set = new HashSet<>(); // 被删除节点的前一个节点 ListNode preNode = null; // 当前节点 ListNode curNode = head; while (curNode != null) { // 当前节点的值 int val = curNode.val; // 查看set中是否包含,true->从链表中删除,false->添加到set中 if (set.contains(val)) { preNode.next = curNode.next; } else { preNode = curNode; set.add(val); } curNode = curNode.next; } return head; }