LeetCode 641. 设计循环双端队列
文章目录
- 1. 题目信息
- 2. 解题
1. 题目信息
设计实现双端队列。
你的实现需要支持以下操作:
MyCircularDeque(k):构造函数,双端队列的大小为k。
insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。
insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。
deleteFront():从双端队列头部删除一个元素。 如果操作成功返回 true。
deleteLast():从双端队列尾部删除一个元素。如果操作成功返回 true。
getFront():从双端队列头部获得一个元素。如果双端队列为空,返回 -1。
getRear():获得双端队列的最后一个元素。 如果双端队列为空,返回 -1。
isEmpty():检查双端队列是否为空。
isFull():检查双端队列是否满了。
示例:MyCircularDeque circularDeque = new MycircularDeque(3); // 设置容量大小为3
circularDeque.insertLast(1); // 返回 true
circularDeque.insertLast(2); // 返回 true
circularDeque.insertFront(3); // 返回 true
circularDeque.insertFront(4); // 已经满了,返回 false
circularDeque.getRear(); // 返回 2
circularDeque.isFull(); // 返回 true
circularDeque.deleteLast(); // 返回 true
circularDeque.insertFront(4); // 返回 true
circularDeque.getFront(); // 返回 4
提示:
所有值的范围为 [1, 1000]
操作次数的范围为 [1, 1000]
请不要使用内置的双端队列库。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/design-circular-deque
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
可以参考我的博客
类似题目:LeetCode 622. 设计循环队列
/*** @description: * @author: michael ming* @date: 2019/8/14 0:23* @modified by: */
class MyCircularDeque {int capa;int curSize;int frontP, backP;int *dq;
public:/** Initialize your data structure here. Set the size of the deque to be k. */MyCircularDeque(int k) {capa = k;curSize = 0;dq = new int [capa];}/** Adds an item at the front of Deque. Return true if the operation is successful. */bool insertFront(int value) {if(isFull())return false;if(isEmpty()){frontP = backP = 0;}else{frontP--;if(frontP == -1)frontP = capa-1;}dq[frontP] = value;curSize++;return true;}/** Adds an item at the rear of Deque. Return true if the operation is successful. */bool insertLast(int value) {if(isFull())return false;if(isEmpty()){frontP = backP = 0;}else{backP++;if(backP == capa)backP = 0;}dq[backP] = value;curSize++;return true;}/** Deletes an item from the front of Deque. Return true if the operation is successful. */bool deleteFront() {if(isEmpty())return false;frontP++;if(frontP == capa)frontP = 0;curSize--;return true;}/** Deletes an item from the rear of Deque. Return true if the operation is successful. */bool deleteLast() {if(isEmpty())return false;backP--;if(backP == -1)backP = capa-1;curSize--;return true;}/** Get the front item from the deque. */int getFront() {if(isEmpty())return -1;return dq[frontP];}/** Get the last item from the deque. */int getRear() {if(isEmpty())return -1;return dq[backP];}/** Checks whether the circular deque is empty or not. */bool isEmpty() {return curSize == 0;}/** Checks whether the circular deque is full or not. */bool isFull() {return curSize == capa;}
};
LeetCode 641. 设计循环双端队列相关推荐
- leetcode:641. 设计循环双端队列
641. 设计循环双端队列 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/design-circular-deque/ 设计实现双端队列. 实现 M ...
- leetcode 622. Design Circular Queue | 641. 设计循环双端队列(Java)
题目 https://leetcode.com/problems/design-circular-deque/ 题解 相关问题:leetcode 622. Design Circular Queue ...
- LeetCode实战:设计循环双端队列
题目英文 Design your implementation of the circular double-ended queue (deque). Your implementation shou ...
- C#LeetCode刷题之#641-设计循环双端队列(Design Circular Deque)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4132 访问. 设计实现双端队列. 你的实现需要支持以下操作: M ...
- 《恋上数据结构第1季》队列、双端队列、循环队列、循环双端队列
队列(Queue) 队列 Queue 队列的接口设计 队列源码 双端队列 Deque 双端队列接口设计 双端队列源码 循环队列 Circle Queue 循环队列实现 索引映射封装 循环队列 – %运 ...
- sv队列和动态数组的区别_Go 刷 LeetCode 系列:经典(7) 设计双端队列
设计实现双端队列. 你的实现需要支持以下操作: MyCircularDeque(k):构造函数,双端队列的大小为k.insertFront():将一个元素添加到双端队列头部.如果操作成功返回 true ...
- LeetCode 239. 滑动窗口最大值(双端队列+单调栈)
文章目录 1. 题目信息 2. 解题 2.1 暴力法 2.2 双端队列法 1. 题目信息 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内 ...
- 【数据结构】队列-顺序队列、循环队列、链队、双端队列
定义 队列是只允许在一端进行插入,而在另一端进行删除的线性表. 队头(Front):允许删除的一端,又称为队首. 队尾(Rear): 允许插入的一端. 先进入队列的元素必然先离开队列,即先进先出(Fi ...
- 【Python养成】:案例(设计三维向量类、实现向量的加法、减法以及向量与标量的乘法和除法运算、编写自定义类,模拟内置集、编写自定义类,模拟双端队列。)
学习内容:设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 实验代码: class Vector_3D:def _ ...
最新文章
- 用计算机a 3如何定义,计算机绘图A 3次.doc
- python自动化部署程序,聊聊Python自动化脚本部署服务器全流程(详细)
- 为什么空格拷贝到linux 会变成两个
- XML读写演示程序(2)
- ES6——Class 的继承 笔记
- 7.Shell 编程从入门到精通 --- 流编辑
- givens变换化上hessenborg矩阵为上三角矩阵
- Java | 仓库管理系统demo
- python检测图像中的矩形_详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
- 如何下载中文和英文的全文专利
- 2022年哈尔滨工业大学计算机考研复试分数线多少
- linux 通过ssh上传文件
- 使用Altium Designer 绘制PCB的详细过程
- Acme的cmd line模式
- 视频剪辑必备的6个免费素材库~
- 【历史上的今天】8 月 3 日:微软研究院的创始人诞生;陌陌正式上线;苹果发布 Newton OS
- Kotlin基础学习 --- 内置函数apply、let
- java面向对象最全入门笔记(通俗易懂,适合初学者)
- 华为nova6计算机在哪,华为nova6有耳机孔吗?耳机孔位置在哪里?数据线接口是什么...
- Spring5源码分析系列(三)Spring5概述