(该篇基本等价于up主视频1:队列、up主视频2:栈的学习笔记记录)
队列
基本概念
- 先入先出
- 基本操作及其时间复杂度
- 访问(通过索引获取):O(n)
- 搜索(通过元素获取):O(n)
- 插入:O(1)
- 删除:O(1)
(访问是指根据索引查询,搜索是指根据指根据值查询)- 优点
- 先入先出,添加删除快
- 缺点:
- 存取其他位置元素较慢
- 应用场景:
- 先入先出的场景,如排队
- 优点
基本操作python实现
#调用
from queue import Queue
q=Queue()
q.put(1) #放入元素1
print(q.get()) #获取元素
#创建
class Queue():
def __init__(self):
self.q=[]
return None
#添加元素val
def put(self,val):
self.q.insert(0,val)
return None
#删除并获取即将出队的元素
def get(self):
return self.q.pop()
# 查看即将出队的元素
def peek(self):
return self.q[-1]
#判断是否为空
def is_empty(self):
return len(self.q)==0
#获取队列大小
def get_size(self):
return len(self.q)
#遍历队列
while not q.is_empty():
print(q.get())
题目
熟悉数据结构
熟悉数据结构+算法
这里例举一般遇到数据结构的题都有哪些解法,建议先看算法解题套路相关文章
(待补充)
栈
- 先入后出
- 基本操作及其时间复杂度
- 访问(通过索引获取):O(n)
- 搜索(通过元素获取):O(n)
- 插入:O(1)
- 删除:O(1)
(访问是指根据索引查询,搜索是指根据指根据值查询)- 优点
- 先入后出,添加删除快
- 缺点:
- 存取其他位置元素较慢
- 应用场景:
- 先入后出的场景,如浏览器回退网页
- 优点
基本操作python实现
#创建
class Stack():
def __init__(self):
self.s=[]
return None
#添加元素val(只有这个和队列不一样!)
def put(self,val):
self.s.append(val)
return None
#删除并获取即将出栈的元素
def get(self):
return self.s.pop()
# 查看即将出栈的元素
def peek(self):
return self.q[-1]
#判断是否为空
def is_empty(self):
return len(self.s)==0
#获取栈大小
def get_size(self):
return len(self.s)
#遍历栈
while not s.is_empty():
print(s.get())
题目
熟悉数据结构
熟悉数据结构+算法
这里例举一般遇到链表题都有哪些解法,建议先看算法解题套路相关文章
(待补充)