刷题最常用的数据结构详解:集合(set)、栈(stack)、队列(deque\queue)、哈希表(hashmap)、堆(heap)

在力扣刷题时,除了最基础的列表(数组)、字符串操作,经常会用到 集合、栈、队列(双向队列)、哈希表、堆 这五种数据结构进行辅助解题,下面是这些数据结构的原理特性详解,以及python里面的用法。

各数据结构方法 时间复杂度 一栏:
https://blog.csdn.net/weixin_44414948/article/details/113934407

1、集合(set)

原理:就是数学课里面学的集合概念,有合集、并集、差集的那个,构成就不再赘述了。。。

特性

1、无序性
2、确定性(编程时表现为不允许下标访问,以及修改元素)
3、不重复性(常用于列表去重)

python实现

# 定义
s = set()

# 增,用法类似于list.append()
s.add()

# 删
s.pop(1)  # 删除指定索引的元素,不传参则随机删除一个
s.remove(x)  # 删除指定值的元素,必须传参
s.clear()  # 清空set
s.discard()  # 和remove类似,不传参不会报错

# 改
# 和字符串一样,不允许中途修改元素的操作,不支持下标索引的方式
s[0] # 这类的操作是不允许的

# 查
for s_i in s: # 使用for in 形式遍历,下标的遍历不允许

# 逻辑运算
s1 & s2  # 求两集合的交集
s1 | s2  # 求两集合的并集
s1 - s2  # 求两集合的差集

用法:列表去重

A = [1, 3, 2, 3, 2, 4, 5, 6]
A = set(A)
print(A)  # 结果为去重后的A,即[1, 3, 2, 4, 5, 6],顺序随机

举例:

力扣刷题:448.找到所有数组中消失的数字(集合差法)
https://blog.csdn.net/weixin_44414948/article/details/113803271

2、栈(stack)

在这里插入图片描述
原理:
栈本质上就是一个容器,存放元素,和列表很像。

特性:
先入后出,后入先出(和队列相反)

python实现:
由于栈和列表很像,所以刷题时可以使用 list 当做 栈 使用,使用 pop() 方法实现出栈,append() 方法实现入栈,熟练这些刷题就够用了。

# 定义
stack = 
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值