82-删除排序链表中的重复元素II

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。


示例

示例 1:

输入: 1->2->3->3->4->4->5
输出: 1->2->5

示例 2:

输入: 1->1->1->2->3
输出: 2->3

解法

核心思想:1.转换成列表 2.利用counter()计数3.将计数为1的重新构建链表

from collections import Counter
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
ls = []
p = head
# 先将所有结点值扫描进列表
while p:
ls.append(p.val)
p = p.next
# 利用Counter进行计数
nums_dict = Counter(ls)
H = ListNode(-1)
p = H
# 将所有value值为1的重新建立结点
for i in nums_dict.keys():
if nums_dict[i] == 1:
p.next = ListNode(i)
p = p.next
return H.next

相关信息

LeetCode:Discussion | Solution

-------------本文结束感谢您的阅读-------------