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

LeetCode两数之和(Two Sum)问题报错:'list'对象不可调用

问题解决建议

1. 先修复触发TypeError的直接问题

报错行for i in nums(0,size)是把列表nums当成函数调用了,这是语法错误。如果要遍历数组的下标,应该用range()生成下标序列:

for i in range(size):

这里size是n-1,能保证i+1不会超出数组下标范围。

2. 修正输入元素的类型错误

你用input()添加的元素是字符串类型,数组里存的是['1','2',...],直接做加法会触发类型错误。需要把输入转为整数:

nums.append(int(input("Enter the array element: \t")))

3. 修正两数之和的逻辑错误

你的代码只检查了相邻元素的和,完全不符合题目要求(题目是找任意两个不同下标的元素和为target),比如测试用例里1+4=5的解会被漏掉。

这里提供两种常见的修正方案:

方案一:暴力枚举(简单直观)

遍历所有两两组合的下标,找到符合条件的对:

def twosum(nums, target):
    n = len(nums)
    for i in range(n):
        for j in range(i+1, n):
            if nums[i] + nums[j] == target:
                print("Output:", i, j)
                return  # 找到唯一解后直接返回

方案二:哈希表(时间复杂度O(n),更高效)

用字典存储已遍历元素的下标,遍历每个元素时检查target - 当前元素是否在字典中:

def twosum(nums, target):
    num_map = {}
    for idx, num in enumerate(nums):
        complement = target - num
        if complement in num_map:
            print("Output:", num_map[complement], idx)
            return
        num_map[num] = idx

4. 优化驱动代码

不需要单独传递size参数,函数内部可以通过len(nums)获取数组长度,简化调用逻辑:

# Driver Code
nums = []
n = int(input("Enter the size of array:"))
for _ in range(n):
    nums.append(int(input("Enter the array element: \t")))

print("Entered array:\t", nums)

target = int(input("Enter the sum to be find:"))
twosum(nums, target)

完整修正后的代码示例(暴力枚举版)

# Two Sum Function
def twosum(nums, target):
    n = len(nums)
    for i in range(n):
        for j in range(i + 1, n):
            if nums[i] + nums[j] == target:
                print("Output:", i, j)
                return

# Driver Code
nums = []
n = int(input("Enter the size of array:"))
for _ in range(n):
    nums.append(int(input("Enter the array element: \t")))

print("Entered array:\t", nums)

target = int(input("Enter the sum to be find:"))
twosum(nums, target)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:32:49