Leetcode第155题 最小栈
思路
参考liweiwei1419的思路
利用一个辅助栈,使得每个元素与其相应的最小值时刻保持一一对应。
(1)辅助栈为空的时候,必须放入新进来的数;
(2)新来的数小于或者等于辅助栈栈顶元素的时候,才放入,特别注意这里“等于”要考虑进去,因为出栈的时候,连续的、相等的并且是最小值的元素要同步出栈;
(3)出栈的时候,辅助栈的栈顶元素等于数据栈的栈顶元素,才出栈。
总结一下:出栈时,最小值出栈才同步;入栈时,最小值入栈才同步。
/*** initialize your data structure here.*/var MinStack = function() {this.stack=[]//辅助栈this.stack2=[]};/*** @param {number} val* @return {void}*/MinStack.prototype.push = function(val) {this.stack.push(val)if(this.stack2.length == 0 || this.stack2[this.stack2.length-1]>=val){this.stack2.push(val)}};/*** @return {void}*/MinStack.prototype.pop = function() {if(this.stack.pop()===this.stack2[this.stack2.length-1]){this.stack2.pop()}};/*** @return {number}*/MinStack.prototype.top = function() {return this.stack[this.stack.length-1]};/*** @return {number}*/MinStack.prototype.getMin = function() {return this.stack2[this.stack2.length-1]};/*** Your MinStack object will be instantiated and called as such:* var obj = new MinStack()* obj.push(val)* obj.pop()* var param_3 = obj.top()* var param_4 = obj.getMin()*/
