题目描述
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
返回同样按升序排列的结果链表。
原:1 -> 2 -> 3 -> 3 -> 4 -> 4 -> 5
现:1 -> 2 -> 5
示例 1:
输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]
实现
public ListNode deleteDuplicates(ListNode head) {
if (head == null) return null;
ListNode dummy = new ListNode(0, head);
ListNode cur = dummy;
while (cur.next != null && cur.next.next != null) {
if (cur.next.val == cur.next.next.val) {// 1 相等->处理
int val = cur.next.val;
while (cur.next != null && cur.next.val == val) {//做覆盖替换
cur.next = cur.next.next;
}
} else {// 2 不相等->后移
cur = cur.next;
}
}
return dummy.next;
}