82. Remove Duplicates from Sorted List II 发表于 2021-12-26 1234567891011121314151617181920212223class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode dummyHead = new ListNode(-1, head); ListNode tail = dummyHead; // 指向最后一个不存在重复值的节点 ListNode curr = head; while (curr != null) { if (curr.next == null || curr.next.val != curr.val) { // 下一个节点为空或者下一个节点值与当前节点值不相同,此时 curr 不存在重复节点,可以加入链表 tail.next = curr; tail = tail.next; } // 跳过值相同的节点,while 退出时 curr 停留在最后一个重复值的节点上 while (curr.next != null && curr.next.val == curr.val) { curr = curr.next; } curr = curr.next; // 此时 curr 再前进一个节点以跳过重复值节点 } tail.next = null; // 截断链表,因为当链表的最后几个节点值相同时不会再进入 while 循环,所以需要手动截断链表 return dummyHead.next; }} Reference82. Remove Duplicates from Sorted List II