题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
http://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
ListNode cur = head;
while(cur != null){
map.put(cur.val,map.getOrDefault(cur.val,0)+1);
cur = cur.next;
ListNode dump = new ListNode(-1);
ListNode temp = dump;
while(cur != null){
if(map.get(cur.val)==1){
temp.next = new ListNode(cur.val);
temp = temp.next;
}
cur = cur.next;
}
return dump.next;
}
}
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
//定义哈希表用于记录值出现的次数
Map<Integer,Integer> map = new HashMap<>();ListNode cur = head;
while(cur != null){
map.put(cur.val,map.getOrDefault(cur.val,0)+1);
cur = cur.next;
}
//定义一个虚拟头,遍历链表若只出现一次连接到链表上
cur = head;ListNode dump = new ListNode(-1);
ListNode temp = dump;
while(cur != null){
if(map.get(cur.val)==1){
temp.next = new ListNode(cur.val);
temp = temp.next;
}
cur = cur.next;
}
return dump.next;
}
}