LeetCode题目:从排序链表中删除重复元素
我试过一种方法,就是从头开始遍历,看看新建的 ListNode 的 curr 是否已经存在。如果不存在,就添加进去。不过,这个方法在处理重复值时好像不太管用,所以我换了个策略,把整个头部的内容复制到新的 ListNode 中,然后如果 curr 的值和 curr.next 相等,就把 curr.next 更新为 curr.next.next,这样就成功了。不过,我还是想搞清楚为什么我之前的方法不奏效,以及我该怎么修复它。
我之前的策略没能成功:
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head:
return None
temp = ListNode()
curr = temp
while head:
if head.val != curr.val:
curr.next = head
head = head.next
curr = curr.next
else:
head = head.next
return temp.next
出错的例子:
head = \[1,1,2,3,3\]
我的输出结果
\[1,2,3,3\]
预期的结果
\[1,2,3\]
我的 if 语句只执行了 3 次,因为当我在 curr = curr.next 下面加了一个打印语句时,它只打印了 1、2、3。但是当最终输出结果时,居然又多了一个 3。
为了解决这个问题,我在 temp.next 之前加了 curr.next = None,但当头部是 [0,0,0] 时,这个方法就不管用了。
1 个回答
暂无回答