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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

LA

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值