题解 | 删除有序链表中重复的元素-II
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates (ListNode head) { // write code here if(head==null){ return null; } Map<Integer,Integer> map= new LinkedHashMap<>(); List<ListNode> list= new ArrayList<>(); while(head!=null){ ListNode p=head; head=head.next; p.next=null; if(map.containsKey(p.val)){ map.put(p.val,map.get(p.val)+1); }else{ map.put(p.val,1); } } ListNode h =new ListNode(-1); ListNode m=h; for(Integer i:map.keySet()){ if(map.get(i)==1){ h.next=new ListNode(i); h=h.next; } } return m.next; } }
注意细节就linkedhashmap如果key是ListNode节点类型,两个节点的值一样是无法确认为同一个key的,注意这是一个坑;