版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://mp.csdn.net/mdeditor/100997353
LeetCode python-1.两数之和
开始刷LeetCode上的题,第一题就被难住了。目前编程的情况是Python基础书本看了两遍,视频课还在陆续学习中。想从简单的编程题开始入手,配合视频一起进行。
这道题搜索查找前辈的答案,编写了代码,测试代码,将之全部弄明白。
题目截图如下:
第一种方法
class Solution(object): #新式类 object ,在Python3.x下,可添加可不添加,不添加也默认有object
def twoSum(nums,target):
lens = len(nums) #列表长度
for i in range(lens):
nums2 = target - nums[i] #另一个值nums2=目标值 - 当前下标在数组中的值
if nums2 in nums: #判断nums2是否在数组中
j = nums.index(nums2) #值nums2的索引
if i != j: #判断元素不重复,满足题意
return [i,j] if i<j else[j,i]
第二种方法
class Solution:
def twoSum(self,nums,target):
lens = len(nums)
d = {}
for i in range(lens):
nums2 = target - nums[i]
if nums[i] in d:
return d[nums[i]],i
else:
d[nums2] = i
解释:
创建空字典
字典里{key:value}中key是指nums2的值,value是指 i 。
例如:
[1,2,9,13] target = 11
i = 0 11-1=10 {10:0} ,即d[10]=0
i = 1 11-2=9 {10:0,9:1},即d[9]=1
i = 2 11-9=2 {10:0,9:1,2:2},即d[2]=2
代码中return d[nums[i]],i
d[nums[i]] 是指 i 索引所对应nums[i]的值的索引,例如最后一步i = 2,对应的nums[2] = 9, 往上一步看9的索引是1,所以d[nums[i]] 输出是1
i 就是指当前索引,即i = 2时nums2=2,d[2]=2,即输出为2
来源:CSDN
作者:hxy-1
链接:https://blog.csdn.net/weixin_43675940/article/details/100997353