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

【链表】删除重复元素

作者: 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