- [ ]
第1题 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。
示例1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
因为不是很会,所以看了一下网友们的答案,自己整理了一下
算法思想
方法一:查询target-nums[i]是否在nums内
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums) - 1):
value = target - nums[i]
for j in range(i + 1, len(nums)):
if nums[j] == value:
return [i, j]
方法二:字典模拟哈希表
target = value1 + value2,将value1存入dict_v中,再遍历至value2可以查询到value1=target-value2在dict_v中
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标。循环时遍历的方式for i, element in enumerate(seq):
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dict_v = {}
for index, value in enumerate(nums):
if dict_v.get(target-value) is not None:
return [dict_v.get(target-value), index]
dict_v[value] = index