力扣 ——两数之和(文章最后求大佬支个招!)

题目在这里插入图片描述
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呢?

请各位看到的大佬支支招啊!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值