原题链接:https://leetcode-cn.com/problems/two-sum/
1.题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2,7,11,15],target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回[0,1]
2.解题思路
题目要求出数组中两个数a,b的和等于target,并返回这两个数的下标。
因为a+b = target ;
则 a = target - b; b = target -a;
我们可以遍历整个数组,将当前的值记作数a并将下标存入结果数组中,然后从当前位置向后检索数组中是否存在数b,如果存在则将数b的下标存入结果数组中后返回结果数组。
3.代码实现
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
result = [] # 定义一个存放结果下标的数组
for i in range(len(nums)): # 遍历整个数组
goal = target - nums[i] # 得到要寻找的目标值
try:
result.append(i) # 将当前值的下标存入结果数组中
result.append(nums.index(goal,i+1)) # 从当前值向后检索是否存在目标值
# 如果存在将下标存入结果数组中
return result # 返回结果
break # 结束遍历
except ValueError:
result.clear() # 不存在目标值,清空数组
pass