19.9.17 最小栈 简单 (需修改)

本文介绍了一种支持push、pop、top及getMin操作的栈设计,getMin操作可在常数时间内检索栈中最小元素。通过自定义顺序栈实现,但当前时间与空间效率较低,后续计划优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


题目:

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

push(x) -- 将元素 x 推入栈中。
pop() -- 删除栈顶的元素。
top() -- 获取栈顶元素。
getMin() -- 检索栈中的最小元素。

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.

代码: 

 1 class MinStack {
 2 
 3     /** initialize your data structure here. */
 4     private int stackSize = 1000;
 5     private int top = 0;
 6     private int base = 0;
 7     private int[] stack;
 8     public MinStack() {
 9         stack = new int[stackSize];
10     }
11     
12     public void push(int x) {
13         if(top < stackSize){
14             stack[top++] = x;
15         }
16     }
17     
18     public void pop() {
19         top--;
20     }
21     
22     public int top() {
23         if(top != 0){
24             return stack[top - 1];  
25         }
26         throw new RuntimeException();
27     }
28     public int getMin(){
29         int save = Integer.MAX_VALUE;
30         for(int i = 0; i < top; i++){
31             if(stack[i] < save)
32                 save = stack[i];
33         }
34         return save;
35     }
36 }
37 
38 /**
39  * Your MinStack object will be instantiated and called as such:
40  * MinStack obj = new MinStack();
41  * obj.push(x);
42  * obj.pop();
43  * int param_3 = obj.top();
44  * int param_4 = obj.getMin();
45  */

心得:

1、这道题的做法是很简单的,就是让你写出栈的几个基本方法;

2、这里运用了一个自己写的顺序栈,但是时间、空间复杂度都很高,过后再进行修改;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值