题解 | 删除链表中重复的结点
删除链表中重复的结点
https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef
import java.util.*; /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ public class Solution { public ListNode deleteDuplication(ListNode pHead) { if(pHead == null) return null; // 使用map字典记录list中每个元素出现的次数,以便之后将重复出现的元素删除 Map<Integer,Integer> map = new HashMap<>(); ListNode cur = pHead; while(cur != null){ if(map.containsKey(cur.val)){ map.put(cur.val,(int)map.get(cur.val)+1); }else{ map.put(cur.val,1); } cur = cur.next; } ListNode res = new ListNode(0); res.next = pHead; cur = res; // cur最初指向虚拟头结点,方便如果头结点重复可以删除头结点 while(cur.next != null){ if(map.get(cur.next.val) != 1){ cur.next = cur.next.next; }else{ cur = cur.next; } } return res.next; } }