编程语言
首页 > 编程语言> > 算法重温(十三): 回归基础数据结构之栈与队列

算法重温(十三): 回归基础数据结构之栈与队列

作者:互联网

1. 写在前面

今天这篇文章复习栈和队列的相关题目了,栈和队列也是两种非常重要的数据结构,在很多地方都会看到,比如非常重要的dfs和bfs中就是分别用的这两个结构,关于这块的题目,我之前刷的不多, 但是这里有几个很重要的结构,单调栈, 单调队列,一些经典的中等偏上的题目要靠它们来搞定,所有这里会重点看看这几个东西的使用。

关于栈,我们需要了解:

关于队列,我们需要了解:

python里面实现双端队列可以使用collections模块里面的deque类,deque 是双边队列(double-ended queue),具有队列和栈的性质,在 list 的基础上增加了移动、旋转和增删等。常用方法:

d = collections.deque([])
d.append('a') # 在最右边添加一个元素,此时 d=deque('a')
d.appendleft('b') # 在最左边添加一个元素,此时 d=deque(['b', 'a'])
d.extend(['c','d']) # 在最右边添加所有元素,此时 d=deque(['b', 'a', 'c', 'd'])
d.extendleft(['e','f']) # 在最左边添加所有元素,此时 d=deque(['f', 'e', 'b', 'a', 'c', 'd'])
d.pop() # 将最右边的元素取出,返回 'd',此时 d=deque(['f', 'e', 'b', 'a', 'c'])
d.popleft() # 将最左边的元素取出,返回 'f',此时 d=deque(['e', 'b', 'a', 'c'])
d.rotate(-2) # 向左旋转两个位置(正数则向右旋转),此时 d=deque(['a', 'c', 'e', 'b'])
d.count('a') # 队列中'a'的个数,返回 1
d.remove('c') # 从队列中将'c'删除,此时 d=deque(['a', 'e', 'b'])
d.reverse() # 将队列倒序,此时 d=deque(['b', 'e', 'a'])

好了, 理论和强大的实现工具介绍完, 整理几个经典的高频题目了,很重要哟!

2. 题目思路和代码梳理

2.1 栈(stack)

2.2 队列(Queue)

3 小总

依然是一天的时间,快速复习了栈和队列的几道经典题目, 栈这个工具是非常好用的,括号匹配, 后缀表达式转中缀表达式,单调栈等,所以要把这个东西牢记于心,在栈中,先加入一个哨兵的操作,有利于屏蔽掉栈空时发生的越界错误。 队列这边,目前刷过的题目较少,只有一个单调队列的题目,也是非常经典。 下面把所有题目整理如下:

栈和队列:

标签:柱子,之栈,deque,队列,元素,重温,括号,遍历,数据结构
来源: https://blog.csdn.net/wuzhongqiang/article/details/115293314