【每日一题】LeetCode 155. 最小栈 TypeScript

发布时间:2026/7/23 20:18:15

【每日一题】LeetCode 155. 最小栈 TypeScript 设计一个支持pushpoptop操作并能在常数时间内检索到最小元素的栈。实现MinStack类:MinStack()初始化堆栈对象。void push(int value)将元素value推入堆栈。void pop()删除堆栈顶部的元素。int top()获取堆栈顶部的元素。int getMin()获取堆栈中的最小元素。示例 1:输入[MinStack,push,push,push,getMin,pop,top,getMin] [[],[-2],[0],[-3],[],[],[],[]]输出[null,null,null,null,-3,null,0,-2]解释MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); -- 返回 -3. minStack.pop(); minStack.top(); -- 返回 0. minStack.getMin(); -- 返回 -2.提示-231 val 231 - 1pop、top和getMin操作总是在非空栈上调用push,pop,top, andgetMin最多被调用3 * 104次栈先进后出栈顶元素数组的最后一个数class MinStack { private stack:number[] private minStack:number[] constructor() { this.stack [] this.minStack [] } push(value: number): void { this.stack.push(value) if(this.minStack.length0 || this.minStack[this.minStack.length-1]value){ this.minStack.push(value) } } pop(): void { if(this.stack.length0) return const del this.stack.pop() if(del this.minStack[this.minStack.length-1]){ this.minStack.pop() } } top(): number { return this.stack[this.stack.length-1] } getMin(): number { return this.minStack[this.minStack.length -1] } } /** * Your MinStack object will be instantiated and called as such: * var obj new MinStack() * obj.push(value) * obj.pop() * var param_3 obj.top() * var param_4 obj.getMin() */注释版class MinStack { //定义栈和辅助栈 //辅助栈最小栈把每个小的数装进栈内 private stack:number[] private minStack:number[] //初始化 constructor() { this.stack [] this.minStack [] } //将元素 value 推入堆栈数组末尾添加元素 push(value: number): void { this.stack.push(value) //如果最小栈没有东西直接进栈 //或者当前数据最小栈的最后一个元素最小栈也要添加新元素 //为什么是?因为如果相等就说明有多个最小值弹出后还有值如果少了号就不清楚有多少个相等的最小值弹出后就没有值了。 if(this.minStack.length0 || this.minStack[this.minStack.length-1]value){ this.minStack.push(value) } } //删除堆栈顶部的元素。删除数组最后一个元素 pop(): void { //判断数组为空的边界情况 if(this.stack.length0) return //取出最后一个数据。.pop()会返回删除后的元素 const del this.stack.pop() //如果这个值是最小值那么最小栈也要删除这个值 if(del this.minStack[this.minStack.length-1]){ this.minStack.pop() } } //获取堆栈顶部的元素。获取数组最后一个元素 //这里注意是“获取”数组[索引] top(): number { return this.stack[this.stack.length-1] } //“获取”堆栈中的最小元素。原数组不动获取最小栈的最后一个元素 getMin(): number { return this.minStack[this.minStack.length -1] } } /** * Your MinStack object will be instantiated and called as such: * var obj new MinStack() * obj.push(value) * obj.pop() * var param_3 obj.top() * var param_4 obj.getMin() */共勉

相关新闻