JavaScript题解剑指offer : 09. 用两个栈实现队列

简介: JavaScript题解剑指offer : 09. 用两个栈实现队列

六、剑指 Offer 09. 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

leetcode-cn.com/problems/yo…

解题思路 : 这里使用了2个栈来组合为一个队列,简单来说就是,栈是先进后出,那么A栈先进去的数值,再放到b栈这个里面就一定是最后放进去出,那么在b栈先出来的数值一定是在栈顶的数值。也就是成功把a栈的数的顺序发转了过来。这就使得最先进a栈的数值也可以在b栈中最先出来。成功模拟了一个队列的先进先出。

var CQueue = function() {
    this.stackIn = [];
    this.stackOut = [];
};
/** 
 * @param {number} value
 * @return {void}
 */
CQueue.prototype.appendTail = function(value) {
    this.stackIn.push(value);
};
/**
 * @return {number}
 */
CQueue.prototype.deleteHead = function() {
    if (this.stackOut.length === this.stackIn.length && this.stackOut.length === 0) return -1;
 const size = this.stackOut.length;
   if(size) {
       return this.stackOut.pop();
   }
   while(this.stackIn.length) {
       this.stackOut.push(this.stackIn.pop());
   }
   return this.stackOut.pop();
};
/**
 * Your CQueue object will be instantiated and called as such:
 * var obj = new CQueue()
 * obj.appendTail(value)
 * var param_2 = obj.deleteHead()
 */
目录
相关文章
|
6月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
141 0
|
3月前
|
JavaScript 前端开发
js事件队列
js事件队列
141 55
|
2月前
|
JavaScript 前端开发 API
详解队列在前端的应用,深剖JS中的事件循环Eventloop,再了解微任务和宏任务
该文章详细讲解了队列数据结构在前端开发中的应用,并深入探讨了JavaScript的事件循环机制,区分了宏任务和微任务的执行顺序及其对前端性能的影响。
|
26天前
|
存储 JavaScript 前端开发
js事件队列
【10月更文挑战第15天】
43 6
|
2月前
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
2月前
|
JavaScript 前端开发
js事件队列
js事件队列
26 0
|
3月前
|
JavaScript 前端开发
JavaScript——一个简单的队列Demo
JavaScript——一个简单的队列Demo
41 4
|
4月前
|
JavaScript
数据结构(用 JS 实现栈和队列【三种方式】)
数据结构(用 JS 实现栈和队列【三种方式】)
47 0
|
4月前
|
存储 JavaScript 前端开发
javascript的栈内存 VS 堆内存(浅拷贝 VS 深拷贝)
javascript的栈内存 VS 堆内存(浅拷贝 VS 深拷贝)
30 0
|
6月前
|
存储 前端开发 JavaScript
【Web 前端】JS中的栈和堆是什么?优缺点?
【4月更文挑战第22天】【Web 前端】JS中的栈和堆是什么?优缺点?