zoukankan      html  css  js  c++  java
  • 022 包含min函数的栈

    1.题目

      定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

    2.分析

      最初想法是定义一个成员变量min来存放最小元素,但是当最小元素弹出后,min就需要相应改变,所以必须把每次的最小值都存储下来。考虑采用一个辅助栈来存放最小值:

        栈  3,4,2,5,1

         辅助栈 3, 3,2,2,1
      (压入时,把每次的最小元素(之前最小元素与新入栈元素的较小值)保存起来放到辅助栈中)

    3.程序

     1 package first;
     2 
     3 import java.util.Stack;
     4 
     5 public class StackWithMin {
     6     Stack<Integer> stack_data=new Stack<Integer>();
     7     Stack<Integer> stack_min=new Stack<Integer>();
     8 
     9     public void push(int node) {
    10         stack_data.push(node);
    11         if(stack_min.empty() || stack_min.peek()>node) {
    12             stack_min.push(node);
    13         }else {
    14             stack_min.push(stack_min.peek());
    15         }
    16     }
    17 
    18     public void pop() {
    19         if(!stack_data.empty()) {
    20             stack_data.pop();
    21             stack_min.pop();
    22         }
    23     }
    24 
    25     public int min() {
    26         return stack_min.peek();
    27     }
    28 }
  • 相关阅读:
    iOS 数据持久化--CoreData
    iOS 数据持久化-- FMDB
    iOS数据持久化--数据库
    iOS数据持久化--归档
    iOS数据持久化--用户属性
    python爬坑记录
    Flutter 爬坑记录
    Web开发爬坑记录
    博客 新址: http://zhoushaoting.com/
    微信小程序开发技巧及填坑记录
  • 原文地址:https://www.cnblogs.com/juncaoit/p/10496345.html
Copyright © 2011-2022 走看看