有人恋爱,有人看海,有人力扣第一题就做不出来(某梗)
1. 两数之和 - 力扣(LeetCode)
几个星期前第一次刷力扣,用c,那得手搓哈希,直接一脸懵逼,然后自己学了一周多python,换了语言刷,顿时舒服多了~
这里我用两种方法写第一题,一雪前耻~
备注:枚举函数(多个参数的话,第二个参数表起始位置)
enumerate(iterable, start=0)
iterable
:一个可迭代对象,如列表、元组、字符串等。
start
:枚举的起始索引,默认为0。
【1】方法1:字典实现哈希
class Solution:
def twosum(self,nums,target):
#创建空字典map
map=dict()
#使用枚举函数enumerate循环提取当前值和对应序数
for i,num in enumerate(nums):
c=target-num#计算差值
if c in map:#若差值在字典中
return [map[c],i]#直接返回差值和当前序数
else:
map[num]=i#不在,存当前值入字典
return []#遍历完啥也没找到的话返回空列表
【2】方法2:列表切片
class Solution:
def twosum(self,nums,target):
#第一重循环,遍历nums
for i in nums:
#第二重循环使用枚举函数enumerate循环提取i的下一个值和对应序数j
for j,num in enumerate([i+1:],i+1):
if nums[i]+num==target:
return [i,j]
return []