营销型网站建设信融,品牌手机网站建设,CMS网站建设优势,工作技巧与工作方法本专栏将记录《剑指 Offer》的刷题#xff0c;传送门#xff1a;https://leetcode.cn/study-plan/lcof/。 目录剑指 Offer 09. 用两个栈实现队列剑指 Offer 30. 包含min函数的栈剑指 Offer 09. 用两个栈实现队列 原题链接#xff1a;09. 用两个栈实现队列 class CQueue {
pu…本专栏将记录《剑指 Offer》的刷题传送门https://leetcode.cn/study-plan/lcof/。 目录剑指 Offer 09. 用两个栈实现队列剑指 Offer 30. 包含min函数的栈剑指 Offer 09. 用两个栈实现队列 原题链接09. 用两个栈实现队列 class CQueue {
public:stackint s1, s2; // s1为主栈s2为辅助栈CQueue() {}void appendTail(int value) {s1.push(value);}int deleteHead() {if (s1.empty()) return -1;else {copy(s1, s2);int t s2.top();s2.pop();copy(s2, s1);return t;}}// 将x的所有元素压入yvoid copy(stackint x, stackint y) {while (!x.empty()) {y.push(x.top());x.pop();}}
};剑指 Offer 30. 包含min函数的栈 原题链接30. 包含min函数的栈 同样设置两个栈s1 为主栈用来存储数据s2 为最小栈用来存储最小值。
class MinStack {
public:stackint s1, s2; // s1是主栈s2是最小栈MinStack() {s2.push(INT_MAX);}void push(int x) {s1.push(x);s2.push(std::min(x, s2.top()));}void pop() {s1.pop();s2.pop();}int top() {return s1.top();}int min() {return s2.top();}
};一个直观的例子
s1:[3,5,6,1,4,0,2,7]s2:[INT_MAX,3,3,3,1,1,0,0,0]\begin{aligned} s_1:\quad [3,5,6,1,4,0,2,7] \\ s_2:\quad [\text{INT\_MAX},\, 3, 3,3,1,1,0,0,0] \end{aligned} s1:[s2:[INT_MAX,3,5,6,1,4,0,2,7]3,3,3,1,1,0,0,0]
列表左端为栈底右端为栈顶。