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

LeetCode两数之和问题:如何输出带方括号的列表索引格式

LeetCode两数之和:输出格式修正

问题现状

我在做LeetCode的两数之和题,代码能算出正确的索引值,但输出格式不符合要求。

原代码

class Solution:

    def twoSum(self, nums: List[int], target: int) -> List[int]:
        list2 = []
        for x in nums:
            for y in nums:
                if x + y == target:
                    list2.append(x)
                    print(nums.index(x))

输入示例

[2,7,11,15]
9

当前输出

0
1

期望输出

[0,1]

修正方案

核心问题

  1. 当前代码是逐个打印索引,没有把索引收集成列表后统一输出
  2. 双重循环会重复匹配(比如x=7、y=2时也会触发),而且nums.index(x)遇到重复元素会返回第一个匹配的索引,存在逻辑漏洞

高效修正版代码

用哈希表优化逻辑同时解决输出问题:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        index_map = {}
        for idx, num in enumerate(nums):
            complement = target - num
            if complement in index_map:
                return [index_map[complement], idx]
            index_map[num] = idx
        return []
  • 用字典存储已遍历数字的索引,时间复杂度降到O(n),比双重循环的O(n²)高效很多
  • 找到符合条件的补数时,直接返回两个索引组成的列表,完全符合LeetCode的输出要求

仅修改输出格式的简易版

如果不想优化循环逻辑,只想先把输出格式改对,可以这样改:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        result = []
        for i in range(len(nums)):
            for j in range(i+1, len(nums)):  # 避免重复检查同一对元素
                if nums[i] + nums[j] == target:
                    result = [i, j]
                    print(result)
                    return result
        return result

这样输出就是[0,1]的格式,同时避免了重复打印的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:50:34