数据结构预算法学习笔记 —— 双端队列(Deque)
2022/9/5 14:22:49
本文主要是介绍数据结构预算法学习笔记 —— 双端队列(Deque),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
双端队列(Deque)
1.简介
双端队列是一种有次序的数据集。
和队列相似,其两端也可以称作为”首“”尾“段,但deque中数据项既可以从队首加入,也可以从队尾加入。同样,数据项也可以从双端队列的两端移除。
某种意义上, 双端队列集合了栈和队列的特点
因此,双端队列并不具有内在的LIFO或者FIFO特性,如果使用双端队列来模拟栈或队列,则需要由使用者自行维护操作的一致性
Deque的python实现
class Deque: # index=0 is rear, index=-1 is head def __init__(self): self.items = [] def addFront(self,item): # add item to the head self.items.append(item) def addRear(self,item): # add item to the rear self.items.insert(0, item) def removeFront(self): # remove the head item and return it return self.items.pop() def removeRear(self): # remove the rear item and return it return self.items.pop(0) def isEmpty(self): return self.items == [] it def size(self): # return the number of items return len(self.items)
2. Deque的应用
2.1回文判定
回文词即正读反读都一样的词,如:radar,madan,toot
判断词是否为回文词,可以先将需要判断的词加入到deque,再从两端同时判定字符是否相同。若结果为是,则删除直到字符串只剩下0或一个词
def palChecker(aString): checker = Deque() for item in aString: checker. addRear(item) while checker.size()> 1: headitem = checker.removeFront() rearitem = checker.removeRear() if headitem != rearitem: return False return True
这篇关于数据结构预算法学习笔记 —— 双端队列(Deque)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行
- 2024-05-08阿里云域名注册流程,分享给第一次购买域名的新手站长!