classMinStack{public:/** initialize your data structure here. */
stack<int>s1;
stack<int>s2;voidpush(int x){
s1.push(x);if(s2.empty()||x<=getMin()) s2.push(x);}voidpop(){if(s1.top()==s2.top()) s2.pop();
s1.pop();}inttop(){return s1.top();}intgetMin(){return s2.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->getMin();
*/
题目:leetcode1441. 用栈操作构建数组
题目描述:给你一个目标数组 target 和一个整数 n。每次迭代,需要从 list = {1,2,3…, n} 中依序读取一个数字。
classCQueue{public:CQueue(){}
stack<int>s1;
stack<int>s2;voidappendTail(int value){
s1.push(value);}intdeleteHead(){if(!s1.empty())return-1;while(!s1.empty()){int tmp=s1.top();
s1.pop();
s2.push(tmp);}int res=s2.top();
s2.pop();while(!s2.empty()){int temp=s2.top();
s2.pop();
s2.push(temp);}return res;}};/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/