zoukankan      html  css  js  c++  java
  • 剑指offer(20)包含min函数的栈

    题目描述

    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

    题目分析

    首先一开始我们分析得到最小值肯定要比较嘛,和栈里面的数据一一比较,但是栈这种数据结构,你又只能和栈顶弹出来的数据进行比较,所以肯定需要一个临时栈嘛,当然这只是一种思路,就是其余的操作pop,push这些和栈的操作一样,只是min的时候借助下临时栈将原来栈弹出来的保存下,以便放回去。

    另外一种思路,也就是剑指offer里面推荐的思路就是增加了一个辅助栈,每次压入数据栈时,把当前栈里面最小的值压入辅助栈当中。这样辅助栈的栈顶数据一直是数据栈中最小的值。

    比如,data中依次入栈,  54381011121
      则min依次入栈,   543, 3,  3,  3,  3, 1

    代码

    const stack = [],
      minStack = [];
    let tmp = null;
    function push(node) {
      if (tmp !== null) {
        if (tmp > node) {
          tmp = node;
        }
        stack.push(node);
        minStack.push(tmp);
      } else {
        tmp = node;
        stack.push(node);
        minStack.push(tmp);
      }
    }
    function pop() {
      stack.pop();
      minStack.pop();
    }
    function top() {
      return stack[stack.length - 1];
    }
    function min() {
      return minStack[minStack.length - 1];
    }
  • 相关阅读:
    洛谷-P5709 【深基2.习6】Apples Prologue
    右键添加功能
    配置Java环境变量遇到的坑
    mysql安装
    页面置换算法
    程序员画图软件
    Java中传值和传引用
    计算机网络之链路层
    Python开发【第十五篇】模块的导入
    Python开发【第十四篇】装饰器
  • 原文地址:https://www.cnblogs.com/wuguanglin/p/min.html
Copyright © 2011-2022 走看看