Remove Duplicates from Sorted List II
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
.
Solution:
首先用hashmap计算每个元素出现的次数,然后给list加个头指针,然后遍历链表,将次数多于1的都删掉。
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode deleteDuplicates(ListNode head) { 14 // Start typing your Java solution below 15 // DO NOT write main() function 16 HashMap<Integer,Integer> map = new HashMap<Integer,Integer>(); 17 ListNode cur = head; 18 while(cur != null){ 19 if(map.containsKey(cur.val)){ 20 map.put(cur.val,map.get(cur.val) + 1); 21 }else{ 22 map.put(cur.val,1); 23 } 24 cur = cur.next; 25 } 26 ListNode header = new ListNode(-1); 27 header.next = head; 28 cur = header; 29 while(cur.next != null){ 30 if(map.get(cur.next.val) > 1){ 31 cur.next = cur.next.next; 32 } 33 else{ 34 cur = cur.next; 35 } 36 } 37 return header.next; 38 } 39 }
posted on 2013-09-27 07:22 Step-BY-Step 阅读(135) 评论(0) 编辑 收藏 举报