美文网首页
82. 删除排序链表中的重复元素 II

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

作者: bangbang2 | 来源:发表于2020-08-28 09:39 被阅读0次
image.png

一开始用双指针,出现误区,解不出来
用set也解不出来
利用LinkedHashMap<node.val,count>来解题,先将所有node的val都放入map,如果已经存在就count++,然后去遍历整个map,将count==1的所有node.val作为新的节点,连在后面
Map<Integer,Integer> map=new LinkedHashMap<Integer,Integer>();//普通的hashmap无法按插入的顺序来删除,如果想按插入的顺序来输出,就利用LinkedHashMap
思路比较简单,直接看代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
          ListNode cur=new ListNode(0);
          ListNode head1=cur;
          ListNode cur1=head;
          Map<Integer,Integer> map=new LinkedHashMap<Integer,Integer>();//普通的hashmap无法按插入的顺序来删除,
          //如果想按插入的顺序来输出,就利用LinkedHashMap
          while(cur1!=null){
              if(map.containsKey(cur1.val)){
                  int temp=map.get(cur1.val);
                  temp++;
                  
                  map.put(cur1.val,temp);
              }else{
              map.put(cur1.val,1);
              
            
              }
              cur1=cur1.next;
              
          }
          
         for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if(entry.getValue()==1){
                cur.next=new ListNode(entry.getKey());
                cur=cur.next;
            }
        }
          return head1.next;
    }
}

相关文章

网友评论

      本文标题:82. 删除排序链表中的重复元素 II

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