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;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码逆流成河,深入C++如何又快又有效?

虽然编程语言有很多,但在需要顶级性能的项目上,基本都会使用C。尤其是机器人、自动驾驶、AI等嵌入和实时系统,都是C的主要应用方向,在这种层面,几乎没有竞争者。比如熊厂的搜索引擎、推荐引擎等核心产品,鹅…

论文浅尝 | 混合注意力原型网络的含噪音少样本的关系分类

论文笔记整理:余海阳,浙江大学硕士,研究方向为知识图谱、自然语言信息抽取。链接:https://www.aaai.org/Papers/AAAI/2019/AAAI-GaoTianyu.915.pdf动机现有的关系分类方法主要依赖于远程监控(DS)&#xff0…

消息中间件系列(七):如何从0到1设计一个消息队列中间件

消息队列作为系统解耦,流量控制的利器,成为分布式系统核心组件之一。 如果你对消息队列背后的实现原理关注不多,其实了解消息队列背后的实现非常重要。 不仅知其然还要知其所以然,这才是一个优秀的工程师需要具备的特征。 今天…

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

文章目录1. 题目信息2. 解题2.1 暴力法2.2 双端队列法1. 题目信息 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例:输入: n…

Airbnb搜索:重排序阶段如何优化搜索结果多样性?

文 | 谷育龙Eric编 | QvQ我是谷育龙Eric,研究方向有深度学习、搜索推荐,喜欢为大家分享深度学习在搜索推荐广告排序应用的文章。本文将基于Airbnb KDD 2020年的论文,介绍Airbnb搜索排序中在重排序阶段如何解决多样性的问题,对工业…

肖仰华 | 做个“有知识”的机器人

本文转载自公众号:知识工场。肖仰华博士,复旦大学计算机科学与技术学院教授,博士生导师,知识工场实验室负责人。本文是肖仰华教授应《中国计算机学会通信》邀请所撰写的特邀文章,全文见 CCCF 2019 年第 5 期。摘要:时下…

消息中间件系列(九):详解RocketMQ的架构设计、关键特性、与应用场景

内容大纲: RocketMQ的简介与演进 RocketMQ的架构设计 RocketMQ的关键特性 RocketMQ的应用场景 RocketMQ的简介 RocketMQ一个纯java、分布式、队列模型的开源消息中间件,前身是MetaQ,是阿里研发的一个队列模型的消息中间件,后开…

LeetCode 151. 翻转字符串里的单词(栈)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1:输入: "the sky is blue" 输出: "blue is sky the" 示例 2:输入: " hello world! " 输出: "world! hel…

推荐系统架构与算法流程详解

文 | yijiapan腾讯 WXG 数据分析师推荐算法的理解如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本。如果把推荐系统简单拆开来看&#xff0…

论文浅尝 | 将字面含义嵌入知识图谱表示学习

论文笔记整理:吴桐桐,东南大学博士生,研究方向为知识图谱,自然语言处理。链接:https://arxiv.org/pdf/1802.00934.pdf本文主要关注知识图谱中的链接预测问题,在既有的知识图谱表示学习模型的基础上提出了一…

优知学院创始人陈睿:怎样做好一个创业公司CTO?

CTO 是企业内技术最高负责人,对企业的发展起到至关重要的作用。但随着公司的不断发展,CTO 的工作重心也会不断变化。只有在正确的阶段做正确的事,才能更好地为公司做出贡献。 本文作者:陈睿 优知学院创始人,10年产品技…

2020年深度学习调参技巧合集

文 | 山竹小果源 | NewBeeNLP编 | 夕小瑶的卖萌屋重点说明:本文主要为整理总结,大部分参考文末资料,感谢分享。寻找合适的学习率学习率是一个非常非常重要的超参数,这个参数呢,面对不同规模、不同batch-size、不同优化…

LeetCode 226. 翻转二叉树(DFS BFS)

文章目录1. 题目信息2. 解题2.1 DFS2.2 BFS1. 题目信息 翻转一棵二叉树。 示例:输入:4/ \2 7/ \ / \ 1 3 6 9输出:4/ \7 2/ \ / \ 9 6 3 1来源:力扣(LeetCode) 链接:…

论文浅尝 | GraphIE:基于图的信息抽取框架

笔记整理:吕欣泽,南京大学计算机科学与技术系,硕士研究生。论文连接:https://arxiv.org/pdf/1810.13083.pdf发表会议:NAACL 2019摘要大多数现代信息提取(IE)系统都是作为顺序标记器实现的&#…

好产品,懂人性

好的产品无一例外,懂人性 张小龙曾经说过,产品经理要懂得抓住用户的贪、嗔、痴,培养用户对产品的粘性,就是要让用户对你的产品产生贪、嗔、痴。 贪是贪婪,嗔是嫉妒,痴是执着。 人类的贪婪、嫉妒和执著培…

LeetCode 104. 二叉树的最大深度

文章目录1. 题目信息2. 解题2.1 递归法2.2 按层遍历1. 题目信息 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7]&…

谷歌重磅:可以优化自己的优化器!手动调参或将成为历史!?

文 | 小轶编 | 夕小瑶背景Google Brain团队发布的一篇最新论文在外网引发热议,或将成为Deep Learning发展历程上里程碑式的工作。它所讨论的,是所有AI行业者都要面对的——Deep Learning中的优化问题。也就是,如何更好地训练一个模型。深度模…

最全目标检测相关资料整理 (目标检测+数据增强+卷价神经网络+类别不均衡...)

1 小目标检测:综述:综述论文Augmentation for small object detection深度学习笔记(十)Augmentation for small object detection(翻译) 吴建明wujianning:小目标检测的增强算法 机器之心&#…

论文浅尝 | 基于未知谓词与实体类型知识图谱的 Zero-Shot 问题生成

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答。来源:NAACL 2018链接:https://www.aclweb.org/anthology/N18-1020问题背景与动机问题生成的目标是将知识图谱三元组作为输入,生成自然语…

阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别

内容大纲: 1.介绍Restful、SOAP、RPC、SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的…