给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6 输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6 输出:[0,1]
提示:
2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
- 只会存在一个有效答案
这时我们可以看一下示例1
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
通过这张图,我们可以理解for循环的基本运行规律
for a in b :
a 则为变量,b 是序列,
那么哪些算是一个序列:
1、字符串可以理解成单个字母组成的序列
2、列表可以理解成由列表中每个成员组成的序列
3、range 函数生成的区间递增或递减列表,可以理解为一个列表,也是一种序列
4、元组也可以理解是一个序列
结合图片,这样就很好理解了for循环的基本运行规律
倒三角故名思意,就是倒过来的三角形
由于range 生成的序列(也就是上述第三种情况)的基本组成部分是 [start ,stop ,step] or [start ,stop] or [stop]
所以拿示例1举例
示例 1:
输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]
nums 有四个变量
将 a 命名为第一个变量 2
range( len(nums) -1 )
则为剩下的变量7,11,15 , 且 a 取不到 15
因为题目要求寻找和为9的两个变量定义为target
range(a+1,len(nums)),则为 a 向后的第一个变量,命名为 b 则 b = 7
此时,若a + b = 9 则输出
2 + 7 = 9所以输出
现在我们就可以理解了所以用【0,1,2】来理解一下倒三角
for a in [0, 1, 2]
for b in [1, 2, 3]
if [0, 1] or [0, 2] or [0, 3] ==target
if [1, 2] or [1, 3] ==target
if [2, 3] ==target
return [?,?]
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for a in range(len(nums)-1):
for b in range(a+1,len(nums)):
if (nums[a]+nums[b])==target:
return [a, b]
好了这样就非常好理解了