LeetCode数组刷题笔记1(python)

两数之和

1、if a in dict:

字典中in操作符的语法是key in dict(而非value.)

可以从“字典中key唯一而value可重复”的角度考虑。

2、enumerate函数

enumerate(iteration, start)

其中iteration为需要遍历的参数,如列表、元组等。start表示开始遍历的值,默认为0。

enumerate的使用及返回值如下例:

for i,x in enumerate(nums):  #i从start(默认0)开始遍历,x=nums[i]

3、暴力枚举vs哈希表(时空复杂度分析)

Ⅰ.暴力枚举算法

for i in range(len(nums)):
    for j in range(i+1,len(nums)):

时间复杂度O(n^2)

空间复杂度O(1),没有再开辟更多内存空间。

Ⅱ.哈希

hashtable = dict()
for i, num in enumerate(nums):

时间复杂度O(n)

空间复杂度O(n)

可见空间与时间不可兼得,使用哈希表算法属于空间换时间。

4、哈希表

哈希表(Hash table),也叫散列表,是一种通过键访问值的数据结构,python中的字典即哈希表的实现。

hashtable = {} #创建一个哈希表
for i, num in enumerate(nums): #一次遍历
    if target - num in hashtable: #在哈希表中查找对应的差值,注意为key in dict
        return [hashtable[target - num], i]
hashtable[nums[i]] = i #在哈希表中添加元素,注意将值添加为key,索引添加为value

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值