题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
ac代码:
1 /* 2 public class ListNode { 3 int val; 4 ListNode next = null; 5 6 ListNode(int val) { 7 this.val = val; 8 } 9 } 10 */ 11 import java.util.ArrayList; 12 import java.util.Arrays; 13 import java.util.HashMap; 14 import java.util.Map; 15 public class Solution { 16 public ListNode deleteDuplication(ListNode pHead) 17 { 18 ListNode p=pHead; 19 Map<Integer,Integer>map=new HashMap<Integer,Integer>(); 20 ArrayList<ListNode>list=new ArrayList<ListNode>(); 21 while(p!=null){ 22 if(map.containsKey(p.val)){ 23 map.put(p.val,map.get(p.val)+1); 24 }else{ 25 map.put(p.val,1); 26 27 } 28 list.add(p); 29 p=p.next; 30 } 31 for(int i=0;i<list.size();i++){ 32 p=list.get(i); 33 if(map.get(p.val)>1){ 34 for(int j=0;j<map.get(p.val);j++){ 35 list.remove(i); 36 } 37 i--; 38 } 39 } 40 for(int i=0;i<list.size()-1;i++){ 41 p=list.get(i); 42 p.next=list.get(i+1); 43 } 44 if(list.size()!=0){ 45 list.get(list.size()-1).next=null; 46 return list.get(0); 47 }else 48 return null; 49 } 50 }