83. Remove Duplicates from Sorted List
使一个sorted list去掉重复出现的元素,如[1,1,2,2,2,2,3,3,11] --> [1,2,3,11]
,之所以是sorted是因为,如果中间出现了某个极值,比如[1,1,2,3,2,1]
,那答案就会分割开来[1,2,3,2,1]
,达不到去重效果。
recursion:
你🐴 不看答案还是写不出啊啊啊啊啊啊啊啊啊
update: head == null
是防止input为空,head.next == null
是正常链表走到头的base case。
public ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null) return head; //这边次序不能换,否则空列表会出错
head.next = deleteDuplicates(head.next);
return (head.val == head.next.val) ? head.next : head;
}
naive方法: 外循环移动head指针,内循环判断两个值是否相等。
public ListNode deleteDuplicates(ListNode head) {
ListNode node = head;
while (head != null) {
while (head.next != null && head.val == head.next.val) {
head.next = head.next.next;
}
head = head.next;
}
return node;
}