最小栈 发表于 2024-10-25 阅读次数: 本文字数: 831 阅读时长 ≈ 2 分钟 题目描述155 最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。 思路使用两个栈,一个栈用于存储数据,一个栈用于存储当前的最小值,分别记作a, b。当push的val大于b中的栈顶元素时,就再次向b压入栈顶元素,否则压入val。 实现代码12345678910111213141516171819202122232425262728293031323334353637383940class MinStack {public: stack<int> st; stack<int> mi; MinStack() { } void push(int val) { st.push(val); if (mi.empty() || val < mi.top()) { mi.push(val); } else { mi.push(mi.top()); } } void pop() { st.pop(); mi.pop(); } int top() { return st.top(); } int getMin() { return mi.top(); }};/** * Your MinStack object will be instantiated and called as such: * MinStack* obj = new MinStack(); * obj->push(val); * obj->pop(); * int param_3 = obj->top(); * int param_4 = obj->getMin(); */