给定一个整数数组,返回两个数字的位置,以便它们加起来成为一个特定值。
假设每个输入都只有一个解决方案,并且不会两次使用同一元素。
Input: [2, 7, 11, 15],target:9
Output:[0, 1]
因为肯定会有两个数相加等于target, 并且是有序list, 所以遍历list里面的数时按顺序就可以
Method 1 两层循环遍历list
每次对第i个数字进行操作, 判断其后面的数与它相加是否等于target
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]
'''
nums=[1,2,3,4] target=7
i=1>>j=2,3,4 加和不等于7
i=2>>j=3,4 ...
i=3>>j=4 加和等于7
'''
时间复杂度为1(n-1)+2(n-2)+...(n-1)1的累加
Method 2 单层循环字典定位
建立一个字典temp, i表示在nums中的位置, j表示数值, 如果target-j的值不存在字典里,那么就把temp[j]=i存入字典, 如果存在就返回i和target-j在字典中对应的value也就是i值