LeetCode热题100(最小栈)

题目描述

设计一个支持 pushpoptop 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

题目思路:

java 复制代码
class MinStack {
    private Stack<Integer> stack;
    private Stack<Integer> min_stack;
    public MinStack() {
        stack = new Stack();
        min_stack = new Stack();
    }
    
    public void push(int val) {
        stack.push(val);
        if(min_stack.isEmpty() || val <= min_stack.peek()){
            min_stack.push(val);
        }
    }
    
    public void pop() {
        if(stack.pop().equals(min_stack.peek())){
            min_stack.pop();
        }
    }
    
    public int top() {
        return stack.peek();
    }
    
    public int getMin() {
        return min_stack.peek();
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(val);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 */

利用两个栈实现,一个是正常存储数据,一个存储当前的栈中的最小值,每次push都需要更新。

相关推荐
位东风1 分钟前
希尔排序(Shell Sort)详解
算法·排序算法
5***84641 分钟前
Spring Boot的项目结构
java·spring boot·后端
SimonKing2 分钟前
基于Netty的TCP协议的Socket客户端
java·后端·程序员
程序员飞哥2 分钟前
几年没面试,这次真的被打醒了!
java·面试
Learner13 分钟前
Python异常处理
java·前端·python
AI科技星15 分钟前
光速飞行器动力学方程的第一性原理推导、验证与范式革命
数据结构·人工智能·线性代数·算法·机器学习·概率论
tao35566716 分钟前
VS Code登录codex,报错(os error 10013)
java·服务器·前端
橘颂TA17 分钟前
【剑斩OFFER】算法的暴力美学——leetCode 946 题:验证栈序列
c++·算法·leetcode·职场和发展·结构与算法
闻缺陷则喜何志丹19 分钟前
【状态机动态规划】3686. 稳定子序列的数量|1969
c++·算法·动态规划·力扣·状态机动态规划