题解 | #删除有序链表中重复出现的元素#
删除有序链表中重复出现的元素
http://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
先遍历一遍,用map存起来,key是当前节点的值,value是出现的次数
再遍历一次,如果这个节点的值出现过2次,则删掉这个节点
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates (ListNode head) { // write code here if(head==null){ return null; } HashMap<Integer,Integer> map = new HashMap<>(); ListNode node = head; while(node!=null){ int count = map.get(node.val) == null ? 0 : map.get(node.val); map.put(node.val,++count); node = node.next; } ListNode listNode = new ListNode(-1); ListNode res = listNode; listNode.next = head; while(listNode.next!=null){ if(map.get(listNode.next.val)>1){ if(listNode.next.next!=null){ listNode.next = listNode.next.next; }else{ listNode.next = null; } }else{ listNode = listNode.next; } } return res.next; } }