NC包含min函数的栈

系列文章目录


文章目录


前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。


描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。

此栈包含的方法有:

push(value):将value压入栈中

pop():弹出栈顶元素

top():获取栈顶元素

min():获取栈中最小元素

示例:

输入: ["PSH-1","PSH2","MIN","TOP","POP","PSH1","TOP","MIN"]

输出: -1,2,1,-1

解析:

"PSH-1"表示将-1压入栈中,栈中元素为-1

"PSH2"表示将2压入栈中,栈中元素为2,-1

"MIN"表示获取此时栈中最小元素==>返回-1

"TOP"表示获取栈顶元素==>返回2

"POP"表示弹出栈顶元素,弹出2,栈中元素为-1

"PSH1"表示将1压入栈中,栈中元素为1,-1

"TOP"表示获取栈顶元素==>返回1

"MIN"表示获取此时栈中最小元素==>返回-1

示例1

输入:

"PSH-1","PSH2","MIN","TOP","POP","PSH1","TOP","MIN"

返回值:

-1,2,1,-1

java 复制代码
import java.util.Stack;

public class Solution {
    //用于栈的push 与 pop
    Stack<Integer> s1 = new Stack<Integer>(); 
    //用于存储最小min
    Stack<Integer> s2 = new Stack<Integer>(); 
    public void push(int node) {
        s1.push(node);  
        //空或者新元素较小,则入栈
        if(s2.isEmpty() || s2.peek() > node)  
            s2.push(node);
        else
            //重复加入栈顶
            s2.push(s2.peek());  
    }
    
    public void pop() {
        s1.pop();
        s2.pop();
    }
    
    public int top() {
        return s1.peek();
    }
    
    public int min() {
        return s2.peek();
    }
}
相关推荐
williamdsy3 小时前
【MoonBit初探】:从一个“陷阱”到深入理解数据结构*
数据结构·map·moonbit
无敌最俊朗@7 小时前
C++ 序列容器深度解析:vector、deque 与 list
开发语言·数据结构·数据库·c++·qt·list
Da Da 泓7 小时前
LinkedList模拟实现
java·开发语言·数据结构·学习·算法
jinmo_C++12 小时前
数据结构_ 二叉树线索化:从原理到手撕实现
数据结构
钮钴禄·爱因斯晨14 小时前
数据结构|图论:从数据结构到工程实践的核心引擎
c语言·数据结构·图论
向前阿、15 小时前
数据结构从入门到实战————栈
c语言·开发语言·数据结构·程序人生
洲覆16 小时前
Redis 64字节分界线与跳表实现原理
数据结构·数据库·redis·缓存
im_AMBER16 小时前
数据结构 02 线性表
数据结构·算法
-雷阵雨-16 小时前
数据结构——包装类&&泛型
java·开发语言·数据结构·intellij-idea
gsfl16 小时前
redis常见数据结构及其编码方式
数据结构·redis