题目来源:码蹄集
题目描述:
Python代码实现:
class MinStack:
def __init__(self):
self.sk = []
self.min_sk = []
def push(self, x: int) -> None:
self.sk.append(x)
if not self.min_sk or x <= self.min_sk[-1]:
self.min_sk.append(x)
else:
self.min_sk.append(self.min_sk[-1])
def pop(self) -> None:
if self.sk:
self.sk.pop()
self.min_sk.pop()
def top(self) -> int:
return self.sk[-1] if self.sk else None
def getMin(self) -> int:
return self.min_sk[-1] if self.min_sk else None
C++代码实现:
原文参考链接:https://betheme.net/dashuju/49396.html?action=onClick
#include<bits/stdc++.h>
using namespace std;
int total;
int sk[1000010];
int main() {
int n;
cin >> n;
for(int i = 1; i <= n; i++) {
int t;
scanf("%d", &t);
if(t == 1) {
int x;
scanf("%d", &x);
sk[++total] = x;
}
else if(t == 2) {
if(total >= 1) total--;
}
else if(t == 3) {
printf("%d\n",sk[total]);
}
else {
int ans = 1e9;
for(int i = 1; i <= total; i++) {
ans = min(ans,sk[i]);
}
printf("%d\n",ans);
}
}
return 0;
}
Java代码实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int total = 0;
int[] sk = new int[1000010];
int n = input.nextInt();
for(int i = 1; i <= n; i++) {
int t = input.nextInt();
if(t == 1) {
int x = input.nextInt();
total++;
sk[total] = x;
}
else if(t == 2) {
if(total >= 1) total--;
}
else if(t == 3) {
System.out.println(sk[total]);
}
else {
int ans = (int)1e9;
for(int j = 1; j <= total; j++) {
ans = Math.min(ans, sk[j]);
}
System.out.println(ans);
}
}
input.close();
}
}