概述
刷leetcode的第一天。。。。
第一道题
此题需要根据输入一个nums数组和一个数值target来找出数组中两个元素相加起来等于target的两个元素,并将两个元素在数组中的位置输出。
先列出我的答案:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dict={}
for i in range(len(nums)):
if target-nums[i] not in dict:
dict[nums[i]]=i
else:
return(dict[target-nums[i]],i)
下面是输出结果:
可以看出输出结果满足题目要求,思路如下:
dict={}
#建立一个空的字典(字典的类型说明在文章末尾)
for i in range(len(nums)):
#遍历数组中的每一个元素
#如果数组中的元素与target(9)的差值没有在字典dict中出现,则往字典中添加一个键值对nums[i]=i
if target-nums[i] not in dict:
dict[nums[i]]=i
else:
#如果target-num[i]的结果出现在字典dict中,则直接返回nums[i]在数组的位置i和target-nums[i]在数组中的位置dict[target-nums[i]],很明显,dict[target-nums[i]]这个键值是之前就存进字典中的
return(dict[target-nums[i]],i)
以数组[2,7,11,15],target=9来举例子,其运行的流程大致为:
首先,建立一个空的字典dict{}
第二步,遍历数组,从第一个元素2开始,判断2与9的差值7在不在dict{}中,因为目前dict{}中还是空的,故if条件target-nums[i] not in dict成立,将nums[0],即数组中第一个元素2以键的形式放进字典中,并将其在数组中的位置0作为对应的值存入字典中,这时,字典dict中多出了一个键值对2:0
第三步,继续遍历,判断第二个元素7是否满足if语句条件,发现7与9的差值2存在于字典dict中,故if条件语句target-nums[i] not in dic不成立,执行else语句,返回dict中键“2”对应的值“0”,以及元素7在原数组中的位置1,即返回0和1。
字典类型dict:
字典是一种映射类型,由若干个“键(key):值(value)”组成,“键”和“值”用冒号分隔开,所有键值对放在一堆大括号{}中,并用逗号分离。其中,“键”必须为不可变类型,在同一个字典中,“键”必须是唯一的,但“值”可以重复。
下面用代码写一段示例:
其中用到三个函数.items()、.keys()、.values(),分别返回字典中所有的键值对、所有的键、所有的值。
a_dict={"姓名":"张三","年龄":20,"身高":170,"体重":170}
print(a_dict)
#打印整个字典
print(a_dict.items())
#打印字典中的所有键值对
print(a_dict.keys())
#打印字典中所有的键(keys)
print(a_dict.values())
#打印字典中所有的值(values)
其输出结果为:
最后
以上就是隐形酒窝为你收集整理的leetcode刷题笔记——TwoSum----字典dict在python3中的使用的全部内容,希望文章能够帮你解决leetcode刷题笔记——TwoSum----字典dict在python3中的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复