LeetCode python-1.两数之和

梦想与她 提交于 2019-11-26 22:37:57

版权声明:本文为博主原创文章,遵循 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!