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

Posted 日月的弯刀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法--可查询最值的栈练习题相关的知识,希望对你有一定的参考价值。

转载请标明出处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
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
 
 

以上是关于算法--可查询最值的栈练习题的主要内容,如果未能解决你的问题,请参考以下文章

《C#零基础入门之百识百例》(二十五)顺序查找 -- 求最值

基于DP+位运算的RMQ算法

配对堆优化Dijkstra算法小记

数据结构与算法-练习题

《算法零基础100讲》(第17讲) 线性枚举 - 最值算法

RMQ原理及实现