首页 > 代码库 > 算法--可查询最值的栈练习题

算法--可查询最值的栈练习题

转载请标明出处http://www.cnblogs.com/haozhengfei/p/68c25fbc949e663f5bb8627a764158f8.html 


可查询最值的栈练习题

技术分享
技术分享
技术分享
技术分享
 
可查询最值的栈练习
 

第2节 可查询最值的栈练习题

 
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
 
 
 
 
 
1
import java.util.Stack;
2

3
public class Solution {
4
    private Stack<Integer> stackData = new Stack<>();
5
    private Stack<Integer> stackMin = new Stack<>();
6

7
    public void push(int node) {
8
        //将当前元素压入栈
9
        stackData.push(node);
10

11
        /**
12
         * 如果最小栈为空,那么直接压入
13
         * 否则如果当前元素小于stackMin的顶部元素,直接压入,大于就继续压入stackMin的顶部元素
14
         */
15
        if(stackMin.isEmpty()){
16
            stackMin.push(node);
17
        } else {
18
            if (node < stackMin.peek().intValue()) {
19
                stackMin.push(node);
20
            }
21
            else{
22
                stackMin.push(stackMin.peek());
23
            }
24
        }
25
    }
26

27
    public void pop() {
28
        stackData.pop();
29
        stackMin.pop();
30
    }
31

32
    public int top() {
33
        return stackData.peek();
34

35
    }
36

37
    public int min() {
38
        return stackMin.peek();
39
    }
40
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
 
 

算法--可查询最值的栈练习题