Leetcode 155. 最小栈 简单
题目:
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
思路1:
用一个额外的栈保存每次push时的最小值。
如果val小于min,则将val放入最小栈,否则放入min
class MinStack { public: MinStack() { stkmin.push(INT_MAX); } void push(int val) { stk.push(val); if(val<stkmin.top()){ stkmin.push(val); }else{ stkmin.push(stkmin.top()); } } void pop() { stk.pop(); stkmin.pop(); } int top() { return stk.top(); } int getMin() { return stkmin.top(); } stack<int> stk; stack<int> stkmin; };
思路2:
不使用额外空间的方法,就是当min_val需要更新(也就是val<=min_val时),先将当前的min_val放入栈中,更新min_val=val,然后将val放入栈
pop时比较top与min_val,如果相等,意味着min_val需要更新
class MinStack { public: MinStack() { min_val=INT_MAX; } void push(int val) { if(val<=min_val){ stk.push(min_val); min_val=val; } stk.push(val); } void pop() { int num=stk.top(); stk.pop(); if(num==min_val){ min_val=stk.top(); stk.pop(); } } int top() { return stk.top(); } int getMin() { return min_val; } int min_val; stack<int> stk; };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
分类:
leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2016-03-16 mediaplayer与surfaceView,无法播放问题