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;
}

results matching ""

    No results matching ""