【LeetCode】删除排序链表中的重复元素 II

avatar
作者
猴君
阅读量:1

目录


一、题目

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。

示例 1:
在这里插入图片描述

输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]
示例 2:
在这里插入图片描述

输入:head = [1,1,1,2,3]
输出:[2,3]

提示:

链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序 排列


二、解法

先遍历一边链表,利用哈希表记录每个数字出现了多少次
然后再遍历一边,跳过哪些所有出现次数超过1的节点


完整代码

# Definition for singly-linked list. # class ListNode: #     def __init__(self, val=0, next=None): #         self.val = val #         self.next = next class Solution:     def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:         cur = dummy = ListNode()         dummy.next = head         dic = {}         while cur.next:             dic[cur.next.val] = dic.get(cur.next.val, 0) + 1             cur = cur.next         cur = dummy         while cur and cur.next:             while cur and cur.next and dic[cur.next.val] > 1:                 cur.next = cur.next.next             cur = cur.next         return dummy.next 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!