题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
#桶排序,仅python可用桶排序,由于list下标可以为负数缘故
#数值范围为绝对值
class Solution:
def deleteDuplicates(self , head: ListNode) -> ListNode:
if not head:
return None
bucket = [0 for i in range(2001)] #|val|<1000, 大于1000的存放负数
while head:
bucket[head.val] += 1 #head.val为负数时,由python列表性质,存放数据的下标位置为1000~2000之间
head = head.next
res = ListNode(-1) #正数链
cur = res
mres = ListNode(-1) #负数链
mcur = mres
for i in range(len(bucket)):
if i <= 1000 and bucket[i] == 1:
newNode = ListNode(i)
cur.next = newNode
cur = newNode
if i > 1000 and bucket[i] == 1:
newNode = ListNode(i-2001)
mcur.next = newNode
mcur = newNode
mcur.next = res.next
return mres.next
查看3道真题和解析