LeetCode题目:从排序链表中删除重复元素

0 投票
1 回答
70 浏览
提问于 2025-04-12 09:15

我试过一种方法,就是从头开始遍历,看看新建的 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 个回答

暂无回答

撰写回答