题解 | #删除有序链表中重复出现的元素#
删除有序链表中重复出现的元素
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;
}
}
vivo公司福利 724人发布