leetcode中等82删除排序链表中的重复元素 II

Posted qq_40707462

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等82删除排序链表中的重复元素 II相关的知识,希望对你有一定的参考价值。

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。

返回同样按升序排列的结果链表。

思路1:遍历

class Solution 
    public ListNode deleteDuplicates(ListNode head) 
        if(head==null || head.next==null) return head;
        ListNode dummy=new ListNode(0);
        dummy.next=head;
        ListNode cur=dummy;

        while(cur.next!=null && cur.next.next!=null)
            if(cur.next.val==cur.next.next.val)
                int t=cur.next.val;
                while(cur.next!=null && cur.next.val==t) cur.next=cur.next.next;
            else cur=cur.next;
        
        return dummy.next;
    

时间复杂度o(n)

思路2:递归

class Solution 
    public ListNode deleteDuplicates(ListNode head) 
        if(head==null || head.next==null) return head;
        ListNode next=head.next;
        if(head.val==next.val)
            while(next!=null && head.val==next.val) next=next.next;
            head=deleteDuplicates(next);
        else head.next=deleteDuplicates(next);

        return head;
    

时间复杂度o(n),每个节点访问过一次

以上是关于leetcode中等82删除排序链表中的重复元素 II的主要内容,如果未能解决你的问题,请参考以下文章

迭代LeetCode 82. 删除排序链表中的重复元素 II

LeetCode 82 删除排序链表中的重复元素II

leetcode(82)---删除排序链表中的重复元素(双指针)

LeetCode 82. 删除排序链表中的重复元素 II

LeetCode 82. 删除排序链表中的重复元素 II

leetcode 82. 删除排序链表中的重复元素 II