题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
审题:
1、对应target的有且仅有两个整数。
2、数组中同一个元素不能使用两遍意思是遍历不能重复,并非数组内不能有重复元素。
我的答案:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j] == target:
return [i,j]
else:
pass
基本思路:双变量枚举法
关注点:
1、遍历的数值设置,第二个元素从i+1开始
2、声明格式:要求提交格式为列表,内为整数
技巧:
先写循环,再写循环内内容
其他解法:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashtable = dict()
for i, num in enumerate(nums):
if target - num in hashtable:
return [hashtable[target - num], i]
hashtable[nums[i]] = i
return []
基本思路:以空间换时间,以num和对应下标构建哈希表。之后每次遍历后先检查target-x是否存在于哈希表中,如不存在,继续向哈希表中添加元素。如存在,则说明两数满足相加等于target,可以取出。