题目:
Python 方法一
用两个for循环
for循环执行顺序规则 如果一个for循环里面还有一个for循环 先执行内层的for循环 , 如果内层for循环条件不满足,则会让内层for循环执行完之后 再执行外层for循环
(也就意思是先定位到数组里面第一个数字,找这个数字后面有谁可以跟它相加之后等于target, 若没有则开始定位数组内第二个数字,然后继续找这个数字后面有没有跟它相加之后等于target的数字)
class Solution(object):
def twoSum(self, nums, target):
n=len(nums) #获取数组nums的长度
for x in range(n): # 外层循环开始遍历,取下标为0的元素,即数组里第一个数字
for y in range(x+1,n): #内层循环,取下标为1 的元素,即数组里面第二个数字
if nums[x] + nums[y]==target: #判断取得的两个数 相加是否等于target
return x,y #上面的判断对的话,就返回两个数的下标
break #结束循环,终止程序(外部循环)
else: #判断错误 则继续执行程序,内层没有执行完的话 继续执行内层
continue
Python 方法二
只用一个for循环 ,用target 减去数组里面每一个数,看看结果有没有在数组里
class Solution(object):
def twoSum(self, nums, target):
n =len(nums)
for x in range(n):
a=target-nums[x]
if a in nums:
y=nums.index(a) # index()方法获取数字的下标
if x==y: #如果两个数一样,题目要求两个数不能重复
continue #若重复则跳过
else: #否则就返回结果
return x,y
break
else:
continue #上面的条件都不满足就跳过,进行下一次循环
但是这里有一点不太明白,为什么要写return x,y , 而不能写 print(nums[x],y) , for循环取出的x难道不是个数字吗?为什么可以直接返回x呢?
请各位看到的大佬支支招啊!!!