83. 删除排序链表中的重复元素
class Solution { //java 有虚拟头结点,但这题用头结点有点多余
public ListNode deleteDuplicates(ListNode head) {
ListNode dummy = new ListNode(0, head);
ListNode pre = dummy;
while (head != null && head.next != null) {
if (head.val == head.next.val) {
pre.next = head.next;
} else {
pre = head; //虚拟头结点 始终是在head/cur节点的左侧,才是dummy应起到的作用
}
head = head.next;
}
return dummy.next;
}
}
class Solution { //java 无虚拟头结点 更加灵活
public ListNode deleteDuplicates(ListNode head) {
ListNode cur = head;
while (cur != null && cur.next != null) {
if (cur.val == cur.next.val) {
cur.next = cur.next.next; //真是灵活
} else {
cur = cur.next;
}
}
return head;
}
}
// 解法拓展: 82. 删除排序链表中的重复元素 II



