//(不同解法持续更新中……)//
题目要求
给定一个整数数组nums
和一个目标值target
,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
-
给定 nums = [2, 7, 11, 15], target = 9
-
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
【Python】解法
解答思路
- 主要思路是:先遍历列表元素,然后寻找列表中是否含有
target - 该元素
的值,如果存在,返回索引。不存在则继续遍历 - 问题:为了优化算法,避免重复遍历,出现返回值为
[0, 1]
和[1, 0]
的情况,创建了一个临时变量存放当前遍历元素之后的所有元素,节约了时间复杂度但增加了空间复杂度
代码部分
lens = len(nums)
for i in range(lens):
nums_2 = nums[i+1:]
num2 = target - nums[i]
if num2 in nums_2:
if len(nums_2) == 1:
print(i, i+1)
else:
print(i, nums_2.index(num2)+i+1)
执行结果:
通过
执行用时 : 1656 ms, 在所有 Python3 提交中击败了23.82%的用户
内存消耗 : 14.8 MB, 在所有 Python3 提交中击败了6.10%的用户