如何打印LeetCode两数之和问题的答案?Python新手技术求助
LeetCode两数之和:用print()输出答案的方法
首先,你的代码是类方法格式(带self参数),如果只是单独运行测试,需要把self去掉改成普通函数,才能直接调用。
打印答案的步骤
- 修正函数定义(去掉
self,同时优化索引获取逻辑):
def twoSum(nums: list[int], target: int) -> list[int]: dictionary = {} for i in range(len(nums)): secondNumber = target - nums[i] if secondNumber in dictionary: # 直接从字典取已存储的索引,比nums.index高效得多 secondIndex = dictionary[secondNumber] if i != secondIndex: return sorted([i, secondIndex]) dictionary[nums[i]] = i
- 定义你的输入列表和目标值(替换成你那一千个数字的列表即可):
# 示例输入,可替换为你的实际列表 nums = [2, 7, 11, 15, ...] target = 9
- 调用函数并打印结果:
result = twoSum(nums, target) # 带说明的打印 print("两数之和的索引结果:", result) # 或者直接打印结果 print(result)
原代码的关键优化点
你原代码里用nums.index(secondNumber)存在两个问题:
- 效率低下:
nums.index()会遍历整个列表查找元素,对于一千个元素的列表,会让算法时间复杂度从O(n)陡增到O(n²),运行速度明显变慢。 - 逻辑冗余:字典本身已经存储了之前遍历过的元素的索引,直接取值即可,完全不需要再调用
index方法去遍历列表。
内容的提问来源于stack exchange,提问作者user19893736
相关产品推荐
相关产品推荐

