刷题-栈和队列(2)
2022/1/29 23:10:56
本文主要是介绍刷题-栈和队列(2),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、题目
二、题目理解
1.用栈实现,所以既要满足找到最小值,同时元素位置没有变
我们可以用两个栈进行实现,一个主栈存放元素,另一个副栈存放最小值,每当需要最小值的时候,我就top出副栈即可,需要当前位置的时候,top出主栈。
三、代码展示
1 /** 2 * initialize your data structure here. 3 */ 4 var MinStack = function() { 5 this.x_stack=[]; //infinity是js里面一个属性:是一个数值类型,+infinity是正无穷大,-infinity是负无穷大 6 this.min_stack=[Infinity]; 7 }; 8 9 /** 10 * @param {number} x 11 * @return {void} 12 */ 13 MinStack.prototype.push = function(x) { 14 this.x_stack.push(x); 15 // 减一是长度和元素的位置序号是不一样的,比如1,2,长度为2,但是1元素的位置是0,所以,要跟前一项进行比较大小,所以长度减一才满足 16 // 此时x已经进入到主栈里面,现在是和副栈的栈顶比较大小,如果比副栈的栈顶小,进入副栈,否则不变 17 this.min_stack.push(Math.min(this.min_stack[this.min_stack.length-1],x)); 18 }; 19 20 /** 21 * @return {void} 22 */ 23 MinStack.prototype.pop = function() { 24 this.x_stack.pop(); 25 this.min_stack.pop(); 26 }; 27 28 /** 29 * @return {number} 30 */ 31 MinStack.prototype.top = function() { 32 // 这里减一也是同一原理 33 return this.x_stack[this.x_stack.length-1]; 34 }; 35 36 /** 37 * @return {number} 38 */ 39 MinStack.prototype.min = function() { 40 return this.min_stack[this.min_stack.length-1]; 41 }; 42 43 /** 44 * Your MinStack object will be instantiated and called as such: 45 * var obj = new MinStack() 46 * obj.push(x) 47 * obj.pop() 48 * var param_3 = obj.top() 49 * var param_4 = obj.min() 50 */
这篇关于刷题-栈和队列(2)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-07如何利用看板工具优化品牌内容创作与审批,确保按时发布?
- 2025-01-07百万架构师第十一课:源码分析:Spring 源码分析:Spring源码分析前篇|JavaGuide
- 2025-01-07质量检测标准严苛,这 6 款办公软件达标了吗?
- 2025-01-07提升品牌活动管理的效率:看板工具助力品牌活动日历的可视化管理
- 2025-01-07宠物商场的精准营销秘籍:揭秘看板软件的力量
- 2025-01-07“30了,资深骑手” | 程序员能有什么好出路?
- 2025-01-07宠物公园的营销秘籍:看板软件如何帮你精准触达目标客户?
- 2025-01-07从任务分解到资源优化:甘特图工具全解析
- 2025-01-07企业升级必备指南:从传统办公软件到SaaS工具的转型攻略
- 2025-01-07一文告诉你IT项目管理如何做到高效