首页 > 试题广场 >

设计getMin功能的栈

[编程题]设计getMin功能的栈
  • 热度指数:14902 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。

输入描述:
第一行输入一个整数N,表示对栈进行的操作总数。

下面N行每行输入一个字符串S,表示操作的种类。

如果S为"push",则后面还有一个整数X表示向栈里压入整数X。

如果S为"pop",则表示弹出栈顶操作。

如果S为"getMin",则表示询问当前栈中的最小元素是多少。


输出描述:
对于每个getMin操作,输出一行表示当前栈中的最小元素是多少。
示例1

输入

6
push 3
push 2
push 1
getMin
pop
getMin

输出

1
2

备注:
1<=N<=1000000

-1000000<=X<=1000000

数据保证没有不合法的操作
头像 小懒鸡
发表于 2019-08-25 16:35:27
两个栈实现栈内最小数据的查询,建立一个栈A存放原始数据,再利用另一个栈B存放每一次的当前栈中的最小数,当栈A要push新的数据时,首先将该数据与栈B的top值相比较,如果栈A的数据比栈B的top值小,则将该数push近栈B,否则栈B压入上一次栈顶的值,这样就记录了每一次比较的最小值。pop时也是一样 展开全文
头像 牛客735704159号
发表于 2020-03-19 17:39:12
方法一: import java.util.Stack; import java.util.Scanner; public class Main{ private Stack<Integer> numStack; private Stack<Integer> 展开全文
头像 牛客583936202号
发表于 2021-10-21 17:35:34
#include <bits/stdc++.h> using namespace std; class MyStack{ public: stack<int> ordinary_stack; stack<int> min_s 展开全文
头像 快支棱起来的椰子很愤怒
发表于 2022-01-07 16:16:22
class Stack: def __init__(self): self.A = [] self.B = [] def push(self, val): self.A.append(val) if not self.B 展开全文
头像 LiQiang03
发表于 2022-02-15 00:19:08
1 出现的bug1 public void push(int value) { /** * bug1: 并没有做到同步,如果有两个相同的最小值进入 * 1, 2, 3, 1 * 去掉一个1后,minStack为空,此时出现数组 展开全文
头像 不达目的绝对不放弃
发表于 2022-03-30 11:12:34
import java.util.*; public class Main{     public static void main(String[] args){    展开全文
头像 dymauny
发表于 2022-03-19 17:09:06
代码一 使用 BufferedReader 读取数据,io 输入时间大幅缩短, 运行时间:1348ms,超过 82.45% 用Java提交的代码 占用内存:21336KB,超过98.89% 用Java提交的代码 import java.util.*; import java.io.*; // 展开全文
头像 犹豫的牛油果在冲浪
发表于 2024-01-27 22:37:00
#include <stdio.h> #include <string.h> #include<stdlib.h> #define MAX_SIZE 1000000 typedef struct { int data[MAX_SIZE]; in 展开全文
头像 简笔话_Golden
发表于 2020-03-23 22:58:12
实现一个具有能返回栈中最小元素的操作的特殊栈;时间O(1),空间O(n) 思想:使用两个栈,一个栈用来保存当前栈中的元素(就是一个正常的栈)记为:dataStack;一个用于保存每一步的最小值,记为:minStack; 数据压入规则:正常压入stackData中;stackMin为空,直接压入; 展开全文
头像 牛客695415901号
发表于 2024-04-06 22:33:15
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { //正常保存数字的栈 展开全文