LeetCode两数之和问题:重复元素索引处理错误排查与修复
问题成因
nums.index()方法的局限性:list.index(x)会返回列表中第一个等于x的元素的索引。当列表存在重复元素时,比如[3,3],不管你取的是第二个3,nums.index(3)始终返回0,导致你得到的索引都是第一个重复元素的位置,出现[0,0]的错误结果。- 返回值类型错误:题目要求返回索引组成的列表(如
[0,1]),但你的代码将索引转为字符串拼接后返回,结果是类似"01"的字符串,不符合题目要求。
修复方案
直接使用循环中已经得到的i和j作为索引即可,不需要调用index()方法——因为i和j本身就是当前遍历到的元素的正确索引。同时修正返回值的类型为列表。
修复后的代码如下:
from typing import List class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: if len(nums) < 2: return [] # 按题目要求返回空列表,而非False for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] == target: return [i, j] # 直接返回索引组成的列表 return [] # 题目保证有解,此句可留作兜底
验证示例
- 测试
nums = [7,2,4,1], target =9:遍历到i=0,j=1时,7+2=9,返回[0,1],符合预期。 - 测试
nums = [3,3], target=6:遍历到i=0,j=1时,3+3=6,直接返回[0,1],解决了重复元素的问题。
内容的提问来源于stack exchange,提问作者Schoggi_23
相关产品推荐
相关产品推荐

