力扣刷题(1): 两数之和

1 问题描述

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

2 问题分析

这个问题,是大部分力扣刷题的第一个题,包括作者自己。为了记录一下自己的刷题过程,特此记录在CSDN。供大家参考。

首先,给出一个数组,例如, [ 2 , 11 , 15 , 7 ] [2,11,15,7] [2,11,15,7],里面有四个元素,这里我们需要找出两个特务,我们不知道这两个特务是什么值,但是,知道,他们两个之和是 9 9 9

现在的任务是,找出这两个特务藏匿的位置!

怎么办呢?

这四个家伙挨着排队,过来检查。
第一个: 2 2 2,第二个: 11 11 11,第三个: 15 15 15,第四个: 7 7 7

(1)step 1:
2 2 2,第一个人,先把它关进小黑屋!

(2)step 2:
11 11 11,第二个人,检查一下,它和小黑屋的人,是不是相加等于 9 9 9

小黑屋里只有 2 2 2 11 + 2 = 13 11+2=13 11+2=13,不是 9 9 9

好吧,把 11 11 11关进小黑屋。

(3)step 3:
15 15 15,第三个人,检查一下,它和小黑屋的人,是不是相加等于 9 9 9

小黑屋里有 2 2 2 11 11 11,相加起来都不是 9 9 9

15 15 15关进小黑屋!

(2)step 4:
7 7 7,第四个人。发现!它和小黑屋里的 2 2 2相加等于 9 9 9
这俩人是特务!
2 2 2在位置 0 0 0 7 7 7在位置 3 3 3

3 python实现

这就是代码:

class Solution:
    def twoSum(self, nums, target):
        n = len(nums)
        hashtable = dict()
        for i in range(n):
            if target - nums[i] in hashtable:
                return [hashtable[target - nums[i]], i]
            else:
                hashtable[nums[i]] = i
        return []

python中的class定义了一个类,叫做Solution,里面定义了一个函数,叫做twoSum。

这个函数,有两个输入,分别叫做 nums 和 target,nums 是需要搜索的可疑人员,即数组。target 是唯一知道的信息。

您可能觉得,不对啊,还有个 self, 这是啥? 哈哈哈,甭管,python里,在类里定义的函数,第一个参数都写,self。

为啥?其实,俺也不太了解,不是计算机专业,半路出家,以后专门写个小文说一下为什么要写self。

hashtable 就是我们的小黑屋。 一开始小黑屋里什么都没有,是空的。

hashtable = dict()

hashtable其实是哈希表,或者叫散列表,通过python中的字典,实现,具体为什么叫"哈希",以后再说,别纠结!

下面这个就是判断,这个数和小黑屋里的数相加是否等于 9 9 9!

if target - nums[i] in hashtable:

这个就是,关进小黑屋!

hashtable[nums[i]] = i

好了,就解释到这了!

4 运行结果

spyder编译器内写的程序:
在这里插入图片描述
运行结果如下:
在这里插入图片描述

再看看力扣中的运行结果:
在这里插入图片描述
在这里插入图片描述
好了,完成了!记得点赞收藏噢。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三十二画生H

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值