You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode两数之和问题:多测试用例返回[0,0]求助

解决LeetCode两数之和测试用例返回[0,0]的问题

问题复盘

我是编程新手,在做LeetCode两数之和简单题时遇到了问题:代码在Codecademy环境和LeetCode单测试用例下能正常运行,但跑2-3个测试用例时,第2、3个用例会返回[0,0]。一开始怀疑是LeetCode提供的类结构Class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]:的问题,试过移除break也没用。

原代码如下:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:

        lengthlist = len(nums)       
        a = 0
        b = 0
        
        for numbera in nums:
            for numberb in nums:
                if nums[a] + nums[b] == target:
                    if a < b:
                        return [a,b]
                        break
                    else:
                        return [b,a]
                        break
                else:
                    continue
                a += 1
            b += 1

问题根源

后来排查发现,核心问题是没有遵循题目中“不能重复使用同一元素”的限制。比如测试用例[3,2,4]、目标值6时,原代码会直接取nums[0]+nums[0]=6,返回[0,0],但正确结果应该是[1,2](2+4=6)。

另外原代码的索引逻辑也有bug:a += 1放在else: continue之后,只有当两数之和不等于target时才会执行,一旦满足条件就直接return,导致a永远停在0;内层循环从头遍历所有元素,必然会出现同一索引元素重复相加的情况。

修正方案

要解决这个问题,只需要让内层循环从外层索引的下一个位置开始遍历(即i+1),确保不会重复使用同一个元素。同时改用索引遍历,更清晰地控制遍历范围:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        # 外层遍历每个元素的索引i
        for i in range(n):
            # 内层从i+1开始,避免重复使用nums[i]
            for j in range(i + 1, n):
                if nums[i] + nums[j] == target:
                    return [i, j]
        # 题目保证有解,这里可以不用处理无解情况
        return []

这种写法既符合题目要求,又能避免同一元素重复使用的问题,所有测试用例都能正常通过。

内容的提问来源于stack exchange,提问作者Svalin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:55:21