我正在尝试编写代码来从排序的链接列表“head”中删除重复项。如果列表以重复项结尾,我下面的代码始终返回最后一个重复项。例如[1,2,2,3,3]
将返回 [1,2,3,3]
。我不明白为什么。有人有想法吗?
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head:
return head
l1=newhead=ListNode(head.val)
head=head.next
while head:
if head.val!=l1.val:
l1.next=head
l1=l1.next
head=head.next
return newhead
最佳答案
您应该跟踪每个新值的前导节点并继续获取下一个节点,直到获得具有不同值的节点,此时您将该节点分配为前导节点的下一个节点:
class Solution(object):
def deleteDuplicates(self, head):
node = head
while node:
lead = node
while node.next and node.next.val == lead.val:
node = node.next
node = lead.next = node.next
return head
关于Python链表删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54043644/