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

题目描述

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

注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。

题目解析

Java里Stack的peek方法是返回栈顶的元素但不移除它,但Stack的pop方法是会移除的。

题目答案

 1 import java.util.Stack;
 2 
 3 public class Solution {
 4 
 5     private Stack<Integer> dataStack= new Stack<>();//数据栈
 6     private Stack<Integer> minStack= new Stack<>();//最小数的栈
 7 
 8     public void push(int node) {
 9         dataStack.push(node);
10         if(minStack.isEmpty() || minStack.peek()>dataStack.peek()){
11             minStack.push(dataStack.peek());
12         }
13         else minStack.push(minStack.peek());
14     }
15     
16     public void pop() {
17         if(!dataStack.isEmpty()) dataStack.pop();
18         if(!minStack.isEmpty()) minStack.pop();
19     }
20     
21     public int top() {
22         return dataStack.peek();// 取出数据栈的栈顶元素
23     }
24     
25     public int min() {
26         return minStack.peek();//取出含min函数的栈的栈顶元素
27     }
28 }

 

posted @ 2020-07-02 20:12  10000_Hours  阅读(112)  评论(0编辑  收藏  举报