1.用两个栈实现队列
a栈用来存放加入的数
b栈用来存放要删除的数
当b栈存在数据时,就把top的元素pop掉
直到b栈中没有数据存放,再重新遍历a栈,把a的数据倒着遍历进b栈。也就是b栈存放着倒着的a栈数据,这样就可以防止重复。
以下是代码:

var CQueue = function() {this.addStack = [];this.deleteStack = [];
};/** * @param {number} value* @return {void}*/
CQueue.prototype.appendTail = function(value) {this.addStack.push(value);
};/*** @return {number}*/
CQueue.prototype.deleteHead = function() {if(!this.deleteStack.length) {while(this.addStack.length) {this.deleteStack.push(this.addStack.pop());}} return this.deleteStack.length? this.deleteStack.pop() : -1;
};/*** Your CQueue object will be instantiated and called as such:* var obj = new CQueue()* obj.appendTail(value)* var param_2 = obj.deleteHead()*/

2.最小栈:设置一个辅助栈,专门存放每一次push时候,整个数组的最小值。

/*** initialize your data structure here.*/
var MinStack = function() {this.findMinStack = [];this.saveStack = [];
};/** * @param {number} x* @return {void}*/
MinStack.prototype.push = function(x) {this.saveStack.push(x);if(this.findMinStack.length) {if(x < this.findMinStack[this.findMinStack.length - 1]) {this.findMinStack.push(x);}  else {this.findMinStack.push( this.findMinStack[this.findMinStack.length - 1]);}} else {this.findMinStack.push(x);}console.log('this.findMinStack',this.findMinStack)
};/*** @return {void}*/
MinStack.prototype.pop = function() {this.saveStack.pop();this.findMinStack.pop();
};/*** @return {number}*/
MinStack.prototype.top = function() {return this.saveStack[this.saveStack.length - 1];
};/*** @return {number}*/
MinStack.prototype.min = function() {return this.findMinStack[this.findMinStack.length - 1];// console.log('this.findMinStack',this.findMinStack);
};/*** Your MinStack object will be instantiated and called as such:* var obj = new MinStack()* obj.push(x)* obj.pop()* var param_3 = obj.top()* var param_4 = obj.min()*/

leetcode题目-最小栈和用两个栈实现队列相关推荐

  1. Leetcode 剑指 Offer 09. 用两个栈实现队列 (每日一题 20210915)

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

  2. 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列

    一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...

  3. 化栈为队(两个栈来实现一个队列)

    实现一个MyQueue类,该类用两个栈来实现一个队列. 示例: MyQueue queue = new MyQueue();queue.push(1); queue.push(2); queue.pe ...

  4. php2个栈写一个队列,【数据结构】栈面试题--两个栈实现一个队列

    首先我们必须清楚,栈先进后出,队列先进先出.这道他们各自的特点以后,我们用两个栈来实现1个队列. 下边给出图片: 下边给出代码: template class Queue { public: void ...

  5. leetcode剑指offe刷题-第一题-用两个栈实现队列

    leetcode剑指offe刷题-第一题 文章目录 leetcode剑指offe刷题-第一题 前言 一.用两个栈实现队列 1.思路 2.代码如下 总结 前言 记录一下自己刷算法的路程. leetcod ...

  6. 剑指Offer的学习笔记(C#篇)-- 用两个栈实现队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 一 . 概念! 首先要理解栈和队列的概念. 1. 栈:咱可以简单的把栈理解成装羽毛球的球桶.或者我们吃的 ...

  7. 一个数组实现两个栈(共享栈)

    题目:   一个数组实现两个栈. 方法1:   下标为0的位置为栈1的栈底,下标为1的位置为栈2的栈底,栈1的元素存放在下标为偶数的位置上,栈2的元素放在下标为奇数的位置上.   如上图所示的数组:若 ...

  8. 【C语言实现共享栈】关于【共享栈】,你知道多少,快来看看吧

    目录 一 .共享栈的基本概念 1.定义 2.特点 二.共享栈的表示 三.共享栈的基本操作 1.共享栈的初始化操作 2.共享栈的判空操作 3.共享栈的进栈操作 0号栈进栈 1号栈进栈 4.共享栈的出栈操 ...

  9. 栈的顺序存储实现(顺序栈)

    目录 1.初始化 2.判断栈是否为空 3.入栈 4.出栈 5.读取栈顶 6.top指针初始化为0的情况 7.共享栈 补充一个小知识点:n个不同元素进栈,那么出栈元素不同的排列的个数为  . 上述公式被 ...

最新文章

  1. Jmeter工具中参数化、正则表达式提取器、响应断言的实现
  2. Nginx的应用之动静分离
  3. Python 为了提升性能,竟运用了共享经济!赶紧看看!!
  4. 【转】Android之apk文件签名——keytool 和 jarsigner
  5. php中浮点数计算问题
  6. 人工智能“国家队”云从科技行人再识别达到96.6%,创世界纪录;知产链IPC与雷神展开合作,推出雷神通证
  7. 11-TensorFlow 基于ResNet的轴承故障诊断
  8. Maven镜像源汇总(含国内、国外)
  9. 华为HCNE(H3CNE) / HCSE(H3CSE)认证必看书籍
  10. Ubuntu安装google中文输入法
  11. MySQL数据库授权与索引
  12. HOOK技术四-插件中Activity启动实战
  13. 如何让好习惯成为你人生中的一部分
  14. 信安实验-RSA(备课)
  15. 非常详细易懂的法线贴图(Normal Mapping)
  16. C#连接SQL Server并查询数据
  17. [python爬虫之路day5]:实战之电影天堂2019精选电影爬取
  18. 高新技术企业申请后多久会出结果呢?
  19. 【博学谷学习记录】超强总结,用心分享丨前端开发:BootStrap框架基础用法
  20. docker中使用aspose word转pdf 乱码问题

热门文章

  1. 计算机左右手控制的按键,采用改进按键布局方法的计算机键盘技术
  2. SEO实战(二) 分析网站在搜索结果中的曝光和点击
  3. Java模拟消息队列
  4. 《信息化项目文档模板十一——系统运维流程工作流程模板》
  5. 基于php旅游管理系统
  6. 预告|2022 星策 Summit 企业数智化转型论坛议程公布!
  7. windows CMD批处理中的一些特殊连接符号
  8. vs2015 openssl-1.0.2j编译
  9. 色彩表示与编码之JPEG压缩编码
  10. 系统非功能需求(质量属性)