题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
解题原理:先用target减去数组中一个数得到的值之后遍历数组去寻找与这个值相等的元素。
我自己写的暴力解法:
def twoSum(nums, target):
for j in range(0,len(nums)):
a = target - nums[j]
for k in range(0,len(nums)):
if k!= j:
if nums[k] == a:
print([j,k])
nums = [1,2,3,4,5]
target = 6
twoSum(nums,target)
输出为:
借鉴别人的字典写法:
def twoSum(nums, target):
hashmap={}
for ind,num in enumerate(nums):
hashmap[num] = ind #这里num是值,ind是索引
for i,num in enumerate(nums):
j = hashmap.get(target - num)
if i!=j:
print([i,j])
nums = [1,2,3,4,5]
target = 6
twoSum(nums,target)
输出一样,第二种写法时间复杂度小了很多。
补充:enumerate()函数相比range()优势是可以同时返回数组的下标和值。