剑指offer 包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
代码:
1 class Solution { 2 public: 3 void push(int value) { 4 st.push(value); 5 if( smin.empty()) 6 smin.push(value); 7 else{ 8 if(value <= smin.top()) //若当前值小于等于当前 smin 中栈顶元素则压入栈 9 smin.push(value); 10 } 11 } 12 void pop() { 13 if( !st.empty() ){ 14 if(st.top() == smin.top()) //若出栈元素与 smin 栈顶元素相同,则将其一并出栈 15 smin.pop(); 16 st.pop(); 17 } 18 } 19 int top() { 20 if( !st.empty() ) 21 return st.top(); 22 } 23 int min() { 24 if( !st.empty() ) 25 return smin.top(); 26 } 27 private: 28 stack<int> st; 29 stack<int> smin; // 用其栈顶指针表示最小元素 30 };
我的笔记:根据栈的先进后出原则,可以将当前栈的最小元素直接在另一栈中表示,即同样有先后顺序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具