错误记载:python3中列表的index方法使用错误

leetcode上的一道题,如下:

在这里插入图片描述

错误代码:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for a in nums:
            for b in nums:
                if a + b == target and nums.index(a) != nums.index(b):
                    return [nums.index(a),nums.index(b)]

在进行测试时,传入的数组为[3,3],target值为6,预期输出为[0,1],实际输出了[0,0]

错误原因

  • 虽然使用了nums.index(a) != nums.index(b)来避免取到同一个值,但是此做法无效
  • 因为nums.index(a) 和 nums.index(b) 只会返回列表中首次出现 a 和 b 的位置,而不是当前循环中的位置。
    • 例如当a遍历到第二个3时,nums.index(3)查询到的是列表中第一个数值为3的元素的索引,而不是a的索引

解决办法

for i in range(len(nums)):
    for j in range(i + 1, len(nums)):  # 从 i+1 开始,避免重复计算
        if nums[i] + nums[j] == target:
            print([i, j])	
  • 确保外层循环的索引 i 不等于内层循环的索引 j,以避免计算相同的元素对。

​​​​​​

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值