找回密码
 立即注册
首页 业界区 安全 剑指offer-20、包含min函数的栈

剑指offer-20、包含min函数的栈

戈森莉 2025-8-12 07:42:49
题⽬描述

定义栈的数据结构,请在该类型中实现⼀个能够得到栈中所含最⼩元素的min 函数(时间复杂度为O(1) )。
此栈包含的⽅法有:

  • push(value) :将value 压⼊栈中
  • pop() :弹出栈顶元素
  • top() :获取栈顶元素
  • min() :获取栈中最⼩元素
思路及解答

双栈法(推荐,实现简单)

使用两个栈:

  • 主栈​:存储所有元素
  • 辅助栈​:存储当前主栈中的最小值
push ⼀个元素的时候,都需要push 进datas stack ,但是push 进⼊mins stack 需要满⾜条件:当前的mins stack 是空的,直接放⼊。或者当前的mins stack 的栈顶元素⼤于或者等于push 进来的值。
pop ⼀个元素的时候,如果栈为空则什么都不操作,如果栈不为空,则判断datas 的第⼀个元素是否和mins 的第⼀个元素相等。如果相等的话那么就需要将mins 和datas pop 出去第⼀个元素,否则只需要将datas 的第⼀个元素 pop 出去即可。
[code]public class Solution {        private Stack datas = new Stack();        private Stack mins = new Stack();        /​**​     * 将元素压入栈中     * @param value 要压入的值     */        public void push(int node) {                datas.push(node);                // 如果辅助栈为空,或新值

相关推荐

您需要登录后才可以回帖 登录 | 立即注册