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]
修正方案
核心问题
- 当前代码是逐个打印索引,没有把索引收集成列表后统一输出
- 双重循环会重复匹配(比如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
相关产品推荐
相关产品推荐

