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

for循环遍历列表获取元素索引出错,重复元素场景返回空是什么原因

问题原因分析

核心问题在于Pythonlist.index()方法的特性:该方法只会返回列表中第一个与查询值匹配的元素的索引。
以输入nums = [3,3]、目标值6的场景为例:

  • 不管遍历到的是第一个位置的3还是第二个位置的3,调用nums.index(3)得到的结果永远是0
  • 这就导致判断条件nums.index(i)!=nums.index(j)永远不成立,无法触发返回逻辑,循环执行结束后没有匹配到符合条件的结果,就会返回空。
    除此之外,你当前的逻辑是直接遍历列表元素而非索引,就算无重复值的场景也会出现重复遍历同一组下标的问题(比如先判断i=2、j=7,再判断i=7、j=2),运行效率很低。
修复方案

方案1:暴力遍历优化(保留双层循环逻辑)

直接遍历索引而非元素,同时内层循环从外层索引的下一位开始,避免重复判断:

from typing import List
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        for i in range(n):
            for j in range(i + 1, n):
                if nums[i] + nums[j] == target:
                    return [i, j]

该方案时间复杂度O(n²),空间复杂度O(1),适合小数据量场景。

方案2:哈希表法(更优解法)

用哈希表存储已经遍历过的元素和对应的索引,单次遍历即可完成判断,时间复杂度降低到O(n):

from typing import List
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hash_map = {}
        for idx, num in enumerate(nums):
            complement = target - num
            if complement in hash_map:
                return [hash_map[complement], idx]
            hash_map[num] = idx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:21:01