美文网首页
【链表】删除重复元素

【链表】删除重复元素

作者: Spring_java | 来源:发表于2021-01-06 13:29 被阅读0次

    编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。

     输入:[1, 2, 3, 3, 2, 1]
     输出:[1, 2, 3]
    
     输入:[1, 1, 1, 1, 2]
     输出:[1, 2]
    

    代码:
    1:使用中间缓存

     public static ListNode<Integer> removeDuplicateNodes(ListNode<Integer> head) {
    
            Set<Integer> set=new HashSet<Integer>();
           // 重点是使用变量代替head,不然head会一直改变
            ListNode cur=head;
            while(cur!=null && cur.next!=null){
                set.add((Integer) cur.val);
                if(set.contains(cur.next.val)){
                    cur.next=cur.next.next;
                }else{
                    cur=cur.next;
                }
            }
            return head;
        }
    

    2:不使用中间缓存
    使用个临时节点,作为head;

    public static ListNode<Integer> removeDuplicateNodes2(ListNode<Integer> head) {
    
           ListNode pre=head;
           while(pre!=null){
               ListNode tmp=pre;
               while(tmp.next!=null){
                   if(tmp.next.val==pre.val){
                       tmp.next=tmp.next.next;
                   }else{
                       tmp=tmp.next;
                   }
               }
               pre=pre.next;
           }
            return head;
        }
    

    相关文章

      网友评论

          本文标题:【链表】删除重复元素

          本文链接:https://www.haomeiwen.com/subject/tqjnoktx.html