• 设计一个有getMin功能的栈


    设计两个栈,一个栈是stackData,另一个栈是stackMin.

    思路:

    压入数据:

    1.若有数据到来则将数据压入stackData,若stackMin为空,则将数据压入stackMin

    2.若stackMin不为空,则比较压入的数据和stackMin的栈顶元素的大小,若小于或等于则压入,若大于则不压入

    弹出数据:

    1.若stackData弹出的数据等于stackMin的栈顶数据则stackMin也弹出数据.

    具体代码如下:

    package chapter1;
    
    import java.util.Scanner;
    import java.util.Stack;
    
    public class pro1_getMin {
        private Stack<Integer> stackData ;
        private Stack<Integer>stackMin ;
        
        public pro1_getMin() {
            this.stackData = new Stack<Integer>() ;
            this.stackMin = new Stack<Integer>() ;
        }
        
        public  void  push(int newNum) {
            stackData.push(newNum) ;
            if(stackMin.isEmpty()) {
                stackMin.push(newNum) ;
            }
            else {
                if(newNum <= stackMin.peek()) {
                    stackMin.push(newNum) ;
                }
            }
        }
        
        public int pop() {
            if(stackData.isEmpty()) {
                throw new RuntimeException("Your stack is empty!") ;
            }
            int value = stackData.pop();
            if(value == stackMin.peek()) {
                stackMin.pop();
            }
            return value ;
        }
        
        public int getMin() {
            if(stackMin.isEmpty()) {
                throw new RuntimeException("Your stack is empty!") ;
            }
            return stackMin.peek();
        }
    
    }
  • 相关阅读:
    HTML JS 数据校验
    算法: 实现LRU缓存,读取、写入O(1)实现
    C/C++ 二维数组
    tmux 终端分屏利器使用
    关于Apache Tomcat存在文件包含漏洞的安全公告
    SQLSERVER触发器触发INSERT,UPDATE,DELETE三种状态
    SQL Server 触发器
    SQL Server游标
    SQL Server基础之游标
    阿里maven镜像配置
  • 原文地址:https://www.cnblogs.com/chwy/p/5611409.html
Copyright © 2020-2023  润新知