public class Solution { public ListNode deleteDuplication(ListNode pHead) { if (pHead == null) { return null; } ListNode result = new ListNode(Integer.MIN_VALUE); result.next = pHead; ListNode pre = result, cur = pHead; while (cur != null) { // 如果cur为重复结点 if (cur.next != null && cur.val == cur.next.val) { // 出来的cur为与重复结点的最后一个 while(cur.next != null && cur.val == cur.next.val) { cur = cur.next; } // 此处直接跳过中间重复的所有节点 pre.next = cur.next; } else { // 该结点可以接收 pre = pre.next; } // 依次遍历链表 cur = cur.next; } return result.next; } }