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)
关键修改说明
- 输入解析:
- 先用
strip().strip('[]')去除字符串首尾的空格和可能存在的方括号; - 再用
split(',')按逗号分割成单个元素的字符串列表; - 通过列表推导式将每个元素转换为整数,得到真正可用的整数列表
nums。
- 先用
- 函数简化:
- 无需将参数赋值给
self属性,直接使用传入的参数更简洁,也符合LeetCode题目的参数规范; - 目标值在输入阶段就转换为整数,函数内直接进行数值比较即可。
- 无需将参数赋值给
测试时,无论你输入[2, 7, 11, 15]还是2,7,11,15,代码都会正确识别整数列表,返回预期的[0, 1]。
内容的提问来源于stack exchange,提问作者user27872831
相关产品推荐
相关产品推荐

