题解 | 删除有序链表中重复的元素-II
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
if(head == null) return head;
Map<Integer,Integer> mp = new HashMap<>();
ListNode cur = head;
while(cur != null){
if(mp.containsKey(cur.val)){
mp.put(cur.val,(int)mp.get(cur.val)+1);
}
else mp.put(cur.val,1);
cur = cur.next;
}
ListNode res = new ListNode(0);
res.next = head;
cur = res;
while(cur.next != null){
if(mp.get(cur.next.val)!=1) cur.next = cur.next.next;
else cur = cur.next;
}
return res.next;
}
}
这个是用map来统计出现次数之后跳过节点 更容易理解 但是比之前那个解法稍微复杂了一点
用数组也可以


