本地运行正常的Python代码提交LeetCode出现NameError运行时错误求助
问题解决:LeetCode提交Python代码出现NameError
错误原因
LeetCode的Python判题系统要求代码必须遵循固定格式:定义名为Solution的类,且类中实现题目指定的方法(本题为twoSum)。你的代码用了自定义的sol函数,还添加了本地测试的打印代码,导致平台找不到Solution类,触发NameError: global name 'Solution' is not defined。
另外,你的算法逻辑存在问题:原代码只检查相邻元素的和,不符合两数之和题目的要求(题目允许任意两个不同索引的元素相加等于目标值,不一定相邻)。
修改方案
1. 遵循LeetCode格式要求
必须定义Solution类和twoSum方法,方法需要返回结果列表(而非打印),移除所有本地测试代码。
2. 修正算法逻辑
推荐使用哈希表实现高效解法(时间复杂度O(n)),或者用双重循环实现基础解法(时间复杂度O(n²))。
高效哈希表解法
class Solution: def twoSum(self, nums, target): num_index_map = {} for idx, num in enumerate(nums): complement = target - num if complement in num_index_map: return [num_index_map[complement], idx] num_index_map[num] = idx return []
基础双重循环解法
class Solution: def twoSum(self, nums, target): n = len(nums) for i in range(n): for j in range(i + 1, n): if nums[i] + nums[j] == target: return [i, j] return []
3. 额外说明
- 不需要自行做输入合法性检查,LeetCode会保证输入符合题目给定的约束条件
- 提交时只需提交
Solution类的代码,不要添加任何测试用例或打印语句
内容的提问来源于stack exchange,提问作者Akhil Tech
相关产品推荐
相关产品推荐

