剑指 Offer 30. 包含min函数的栈
Posted Billy Miracle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer 30. 包含min函数的栈相关的知识,希望对你有一定的参考价值。
题目描述:
注意:本题与主站 155 题相同:https://leetcode-cn.com/problems/min-stack/
思路:
在自定义的Minstack中定义两个栈,一个mainStack
用来存放正常的栈,用来保证正常的栈的操作。另一个栈minStack
用来保存历次添加最小的数。由于栈是遵循后进先出的原则,所以可以很好地使用两个栈完成操作。
代码:
class MinStack
public:
/** initialize your data structure here. */
stack<int> mainStack;
stack<int> minStack;
MinStack()
void push(int x)
mainStack.push(x);
if (minStack.empty())
minStack.push(x);//空栈,推入(相当于第一个最小的)
else if (x <= minStack.top())
minStack.push(x);//加入历来几个最小的记录
void pop()
int x = mainStack.top();
if (minStack.top() == x) //如果是和mainStack一样的就把minStack里的也pop
minStack.pop();
mainStack.pop();
int top()
return mainStack.top();
int min()
return minStack.top();
;
/**
* 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->min();
*/
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖
以上是关于剑指 Offer 30. 包含min函数的栈的主要内容,如果未能解决你的问题,请参考以下文章