文章目录

  • 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. 设计循环双端队列相关推荐

  1. leetcode:641. 设计循环双端队列

    641. 设计循环双端队列 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/design-circular-deque/ 设计实现双端队列. 实现 M ...

  2. leetcode 622. Design Circular Queue | 641. 设计循环双端队列(Java)

    题目 https://leetcode.com/problems/design-circular-deque/ 题解 相关问题:leetcode 622. Design Circular Queue ...

  3. LeetCode实战:设计循环双端队列

    题目英文 Design your implementation of the circular double-ended queue (deque). Your implementation shou ...

  4. C#LeetCode刷题之#641-设计循环双端队列(Design Circular Deque)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4132 访问. 设计实现双端队列. 你的实现需要支持以下操作: M ...

  5. 《恋上数据结构第1季》队列、双端队列、循环队列、循环双端队列

    队列(Queue) 队列 Queue 队列的接口设计 队列源码 双端队列 Deque 双端队列接口设计 双端队列源码 循环队列 Circle Queue 循环队列实现 索引映射封装 循环队列 – %运 ...

  6. sv队列和动态数组的区别_Go 刷 LeetCode 系列:经典(7) 设计双端队列

    设计实现双端队列. 你的实现需要支持以下操作: MyCircularDeque(k):构造函数,双端队列的大小为k.insertFront():将一个元素添加到双端队列头部.如果操作成功返回 true ...

  7. LeetCode 239. 滑动窗口最大值(双端队列+单调栈)

    文章目录 1. 题目信息 2. 解题 2.1 暴力法 2.2 双端队列法 1. 题目信息 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内 ...

  8. 【数据结构】队列-顺序队列、循环队列、链队、双端队列

    定义 队列是只允许在一端进行插入,而在另一端进行删除的线性表. 队头(Front):允许删除的一端,又称为队首. 队尾(Rear): 允许插入的一端. 先进入队列的元素必然先离开队列,即先进先出(Fi ...

  9. 【Python养成】:案例(设计三维向量类、实现向量的加法、减法以及向量与标量的乘法和除法运算、编写自定义类,模拟内置集、编写自定义类,模拟双端队列。)

    学习内容:设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 实验代码: class Vector_3D:def _ ...

最新文章

  1. 用计算机a 3如何定义,计算机绘图A 3次.doc
  2. python自动化部署程序,聊聊Python自动化脚本部署服务器全流程(详细)
  3. 为什么空格拷贝到linux 会变成两个
  4. XML读写演示程序(2)
  5. ES6——Class 的继承 笔记
  6. 7.Shell 编程从入门到精通 --- 流编辑
  7. givens变换化上hessenborg矩阵为上三角矩阵
  8. Java | 仓库管理系统demo
  9. python检测图像中的矩形_详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
  10. 如何下载中文和英文的全文专利
  11. 2022年哈尔滨工业大学计算机考研复试分数线多少
  12. linux 通过ssh上传文件
  13. 使用Altium Designer 绘制PCB的详细过程
  14. Acme的cmd line模式
  15. 视频剪辑必备的6个免费素材库~
  16. 【历史上的今天】8 月 3 日:微软研究院的创始人诞生;陌陌正式上线;苹果发布 Newton OS
  17. Kotlin基础学习 --- 内置函数apply、let
  18. java面向对象最全入门笔记(通俗易懂,适合初学者)
  19. 华为nova6计算机在哪,华为nova6有耳机孔吗?耳机孔位置在哪里?数据线接口是什么...
  20. Spring5源码分析系列(三)Spring5概述

热门文章

  1. 静态链接与动态链接的区别
  2. Kettle 学习导航帖整理
  3. Yakuake 2.8 beta1
  4. 测试ASP.NET 2.0中Gridview控件高级技巧
  5. GARFIELD@10-07-2004
  6. SQLite和MySQL数据库的区别与应用
  7. 聊聊内卷之下,直博和读完硕士再读博该怎么选择?
  8. 总结一些调试的心得,ES7243
  9. Alsa里面恶心的DAPM
  10. Linux内核LED子系统、请务必看