import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates (ListNode head) { // write code here if (head == null || head.next == null) { return head; } ListNode slow = head; ListNode fast = head.next; while (fast != null) { if (fast.val != slow.val) { slow = fast; } else { slow.next = fast.next; } fast = fast.next; } return head; } public ListNode deleteDuplicates2 (ListNode head) { // write code here if (head == null || head.next == null) { return head; } Set<Integer> set = new HashSet<>(); ListNode dummy = new ListNode(-1); ListNode tail = dummy; ListNode cur = head; while (cur != null) { if (!set.contains(cur.val)) { tail.next = cur; tail = cur; set.add(cur.val); } cur = cur.next; } tail.next = null; return dummy.next; } }