概述
给定一个整数数组 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
只会存在一个有效答案
进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?
### 解题思路
先说一下解题的思路,我是看了一下解答视频的,然后把他的代码拷过来但是看懂总是很难
索性听了一下思路,自己做了一下,再结合讲解去做
解题思路是:首先他会让你给你一个列表,在给一个数,从这这个列表中找出两个数+起来等于你给的第二个数
那怎么解决,无非是这样,先把列表的第一个数去加第二个数,判断一下等于吗?不等于再第一个数加上第三个数
听这个思路就要用到双重for循环,外循环执行一次,内循环执行多次
解决思路:首先第一个数要循环次数对不对,循环多少次?是不是你给的列表有多长,我就循环多少次
long = len(nums),就是将nums的长度给long
range就是你传个几就会执行几次
现在外循环解决了,剩下的就是内循环
比如我传入了5个数,分别是 1,3,5,6,7
那第一次循环是不是得1+3,1+5,1+6,1+7
第二次,3+5,3+6,3+7
每一次循环比上一次少一次
所以呢,就采用a+1的方式,他的循环次数是long,也就是6
每次再判断是不是相等的,nums[a]就是拿到当前索引的值
最终再返回索引!!!!
以上为我自己理解到的思路,总体来说有些肯定不细节,但这也是我作为python小白能理解得了
有什么误导概不负责哈,有什么缺点欢迎大家指正
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
long = len(nums)
for a in range(long):
for b in range(a + 1, long):
if nums[a] + nums[b] == target:
return (a, b)
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
最后
以上就是背后月亮为你收集整理的力扣第一题,两数之和解法的全部内容,希望文章能够帮你解决力扣第一题,两数之和解法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复