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

Python Two Sum逻辑错误:返回错误索引,如何修正?

问题分析与解决

你的代码核心问题出在输入处理环节——input()获取到的是字符串类型,你直接将其传给twoSum的nums参数,导致函数遍历的是字符串的每个字符,而非整数列表的元素。比如输入[2, 7, 11, 15]时,实际得到的number是字符串"[2, 7, 11, 15]",遍历它时索引对应的是单个字符,自然无法正确计算数值和,返回错误的索引。

修改后的代码

class Solution(object):
    def twoSum(self, nums, target):
        length = len(nums)
        for i in range(length):
            for j in range(i+1, length):
                if nums[i] + nums[j] == target:
                    return [i, j]
        return "Error"

# 处理输入的列表字符串,转换为整数列表
number_input = input("Enter list: ")
# 兼容带[]和不带[]的输入格式
cleaned_input = number_input.strip().strip('[]')
nums = [int(num.strip()) for num in cleaned_input.split(',')]
# 目标值直接转换为整数
target = int(input("Enter the target: "))

solution = Solution()
index = solution.twoSum(nums, target)
print(index)

关键修改说明

  1. 输入解析:
    • 先用strip().strip('[]')去除字符串首尾的空格和可能存在的方括号;
    • 再用split(',')按逗号分割成单个元素的字符串列表;
    • 通过列表推导式将每个元素转换为整数,得到真正可用的整数列表nums。
  2. 函数简化:
    • 无需将参数赋值给self属性,直接使用传入的参数更简洁,也符合LeetCode题目的参数规范;
    • 目标值在输入阶段就转换为整数,函数内直接进行数值比较即可。

测试时,无论你输入[2, 7, 11, 15]还是2,7,11,15,代码都会正确识别整数列表,返回预期的[0, 1]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:21:18