Remove Duplicates from Sorted List II

来源:互联网 发布:php要看那些书籍 编辑:程序博客网 时间:2024/05/16 10:50

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;    }}



0 0
原创粉丝点击