C语言重构【155】最小栈

it2023-05-05  67

文章目录

所有题目源代码:[Git地址](https://github.com/ch98road/leetcode)题目方案:

所有题目源代码:Git地址

题目

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例: 输入: ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]] 输出: [null,null,null,null,-3,null,0,-2] 解释: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2. 提示: pop、top 和 getMin 操作总是在 非空栈 上调用。

方案:

#include <iostream> #include <stack> #include <math.h> using namespace ::std; class MinStack { public: /** initialize your data structure here. */ MinStack() { //链表 } void push(int x) { if (st.size() == 0) { st.push({x, x}); } else { st.push({x, min(x, st.top().second)}); } } void pop() { st.pop(); } int top() { return st.top().first; } int getMin() { return st.top().second; } private: stack<pair<int, int>> st; }; /** * Your MinStack object will be instantiated and called as such: * MinStack* obj = new MinStack(); * obj->push(x); * obj->pop(); * int param_3 = obj->top(); * int param_4 = obj->getMin(); */
最新回复(0)