码迷,mamicode.com
首页 > 其他好文 > 详细

022 包含min函数的栈

时间:2019-03-08 16:32:05      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:with   程序   else   www   empty   stack   题目   tle   oid   

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 }

 

022 包含min函数的栈

标签:with   程序   else   www   empty   stack   题目   tle   oid   

原文地址:https://www.cnblogs.com/juncaoit/p/10496345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!