【前端面试】设计循环双端队列javascript

news/2024/11/9 16:43:22/

题目

https://leetcode.cn/problems/design-circular-deque/description/
在这里插入图片描述

存储循环队列的向量空间是循环的,用通俗的话来讲,就是我们在做next或者prev操作时,不会发生溢出
取模、或者直接判断是否为0/size返回一个值。

数组实现

用函数来实现一个类,定义容量、头尾指针,和初始化数组存储

javascript">/*** @param {number} k*/
var MyCircularDeque = function(k) {this.capacity = k + 1;this.rear = this.front = 0;this.elements = new Array(k + 1).fill(0);
};

利用原型链扩展循环队列的能力

javascript">
/** * @param {number} value* @return {boolean}*/
MyCircularDeque.prototype.insertFront = function(value) {if (this.isFull()) {return false;}this.front = (this.front - 1 + this.capacity) % this.capacity;this.elements[this.front] = value;return true;
};/** * @param {number} value* @return {boolean}*/
MyCircularDeque.prototype.insertLast = function(value) {if (this.isFull()) {return false;}this.elements[this.rear] = value;this.rear = (this.rear + 1) % this.capacity;return true;
};/*** @return {boolean}*/
MyCircularDeque.prototype.deleteFront = function() {
if (this.isEmpty()) {return false;}this.front = (this.front + 1) % this.capacity;return true;
};/*** @return {boolean}*/
MyCircularDeque.prototype.deleteLast = function() {
if (this.isEmpty()) {return false;}this.rear = (this.rear - 1 + this.capacity) % this.capacity;return true;
};/*** @return {number}*/
MyCircularDeque.prototype.getFront = function() {if (this.isEmpty()) {return -1;}return this.elements[this.front];
};/*** @return {number}*/
MyCircularDeque.prototype.getRear = function() {
if (this.isEmpty()) {return -1;}return this.elements[(this.rear - 1 + this.capacity) % this.capacity];
};/*** @return {boolean}*/
MyCircularDeque.prototype.isEmpty = function() {
return this.rear == this.front;
};/*** @return {boolean}*/
MyCircularDeque.prototype.isFull = function() {return (this.rear + 1) % this.capacity == this.front;
};/*** Your MyCircularDeque object will be instantiated and called as such:* var obj = new MyCircularDeque(k)* var param_1 = obj.insertFront(value)* var param_2 = obj.insertLast(value)* var param_3 = obj.deleteFront()* var param_4 = obj.deleteLast()* var param_5 = obj.getFront()* var param_6 = obj.getRear()* var param_7 = obj.isEmpty()* var param_8 = obj.isFull()*/

http://www.ppmy.cn/news/1520700.html

相关文章

adb大全指令(持续更新)

连接adb adb connect 192.168.1.133(局域网ip)连接调试命令 adb shell打开日志工具 logcat

minio最新源码编译(处理安全扫描中跨域访问、.js.map等不安全问题) 版本:RELEASE.2024-06-26T01-06-18Z

编译前注意事项 编译基于tag为RELEASE.2024-06-26T01-06-18Z的版本处理安全扫描问题。如:敏感信息泄露、.js.map、跨域访问问题需要准备两个工程,前端工程console和minio工程, 目录结构处理: gowork/ │ └── src/├── github.com├── …

【Xcode】Xcode基本使用指引

文章目录 Xcode安装及iphone模拟器的安装Xcode中Debug和Release的切换Xcode中控件的使用Xcode工程的基本组成Xcode UI基本设计及使用iOS开发项目中的日志系统静态库支持多种架构制作xcframeworklibuv库Xcode路径.pbxproj文件苹果平台的宏Leaks检测内存泄漏OC中的ARC和MRC小结 X…

朴素贝叶斯分类算法

文章目录 贝叶斯定理问题背景朴素贝叶斯朴素贝叶斯分类算法原理朴素贝叶斯分类算法步骤给定示例数据 极大似然估计如何求 P ( 特征 ∣ 类别 ) P ( 类别 ) P(\text{特征} \mid \text{类别}) \times P(\text{类别}) P(特征∣类别)P(类别)?如何求 P ( 类别 ) P(\text{…

10 万元预算,竟能打造满足第一性原理计算的高性价比服务器

科学研究的领域中,第一性原理计算占据着至关重要的地位。它要求服务器具备极高的性能,以应对复杂的量子力学计算任务。 第一性原理计算涉及对物质本质的深入探索,需处理海量数据并进行大规模并行计算。第一性原理计算基于量子力学原理&#x…

flask-解决跨域问题

pip install flask_cors两种方式 # 全局 CORS(app, supports_credentialsTrue)# 包装在 app.route 之上 cross_origin()

开放式耳机的优缺点?有什么推荐吗?四款开放式蓝牙耳机推荐

开放式耳机的优点有很多其实,但是每个东西多多少少都是一把双刃剑,所以缺点当然也是有的。那就先讲它的优点: 首先因为不入耳的设计,耳机不是直接塞入耳道的,所以能让耳道保持“呼吸”,减少长时间佩戴导致…

【C++ | 设计模式】简单工厂模式的详解与实现

1.简单工厂模式概述 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它定义了一个工厂类,由这个类根据提供的参数决定创建哪种具体的产品对象。简单工厂模式将对象的创建逻辑集中到一个工厂类中,从而将对…