题目:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
方法1:暴力搜索
这是我们最简单能够想到的方法,直接使用简单的for循环就能够实现。这里我们用python代码简单实现一下:
def fun(nums, target):
for i, num_1 in enumerate(nums):
for j, num_2 in enumerate(nums[i:]):
if num_1 + num_2 == target:
return[i, j+i]
return 0
方法2:使用哈希表
第一种方法实现较为简单,空间复杂度为,但是其时间复杂度较高,为。
这里我们想一下是否可以利用空间来换取时间呢?
我们可以使用hashmap来对前面的数据进行存储,就可以做到遍历一次就完成任务。
我们定义一个字典,字典的键用来存储数字,值存储对应的坐标;遍历数组,并查找数组中的值,与字典中的键相加是否等于目标数字,其具体代码如下:
def fun2(nums, target):
m = {}
for i, num_1 in enumerate(nums):
if target-num_1 in m.keys():
return[m[target-num_1], i]
else:
m[num_1] = i
return 0
网友评论