Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null || head.next==null) return head;
ListNode curr=head;
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
while(curr!=null){
if(map.containsKey(curr.val)){
map.put(curr.val,map.get(curr.val)+1);
}
else{
map.put(curr.val,1);
}
curr=curr.next;
}
curr=head;
ListNode prev=new ListNode(0);
ListNode p=prev;
prev.next=null;
while(curr!=null){
if(map.get(curr.val)<=1){
prev.next=curr;
curr=curr.next;
prev=prev.next;
prev.next=null;
}
else curr=curr.next;
}
return p.next;
}
}
430

被折叠的 条评论
为什么被折叠?



