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

LeetCode运行两数之和代码遇ValueError:int()无法转换非十进制字面量

问题原因及解决办法

这不是LeetCode的问题,是你的输入处理逻辑和LeetCode的输入格式不匹配导致的。

错误根源

  • 本地IDLE运行时,你输入的是空格分隔的数字(比如2 7 11 15),用input().split(" ")分割后能得到单个数字字符串,转int没问题。
  • 但LeetCode的输入是带方括号和逗号的列表格式字符串(比如[2,7,11,15]),此时input().split(" ")会把整个[2,7,11,15]当成一个元素,转int时自然会报错,因为这个字符串不是合法的十进制数字。

修正步骤

  1. 调整输入处理逻辑,适配LeetCode的列表格式输入:
# 处理nums输入:去掉首尾方括号,按逗号分割后转int
nums_input = input().strip()
nums_str = nums_input[1:-1]  # 去掉[]
nums = list(map(int, nums_str.split(','))) if nums_str else []

target = int(input())
  1. 修复函数的其他问题:
    • 你的twosum函数存在缩进错误,且没有返回值(LeetCode要求返回符合条件的索引列表);
    • 调用函数时的s.twosum是错误的,直接调用twosum(nums, target)即可。

修正后的完整示例代码:

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

# 适配LeetCode输入格式的处理
nums_input = input().strip()
nums_str = nums_input[1:-1]
nums = list(map(int, nums_str.split(','))) if nums_str else []

target = int(input())
result = twosum(nums, target)
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:10:58