由于之前看了牛客网的数据结构和算法的课程知道了左神,现在顺便就买了他的书做做题吧,虽然书的题解都是java实现的,但好在用c++实现难度不大。
第一章 栈和队列
题目一:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) – 将元素 x 推入栈中。
pop() – 删除栈顶的元素。
top() – 获取栈顶元素。
getMin() – 检索栈中的最小元素。
class MinStack {
public:
MinStack() {
}
void push(int x) {
databace.push(x);
if (stackMin.empty()||x<=stackMin.top())
{
stackMin.push(x);
}
else{
stackMin.push(stackMin.top());
}
}
void pop() {
databace.pop();
stackMin.pop();
}
int top() {
return databace.top();
}
int getMin() {
return stackMin.top();
}
private:
//用database和stackMin两个栈实现
stack<int> databace;//保存当前栈中的元素
stack<int> stackMin;//保存每一步的最小值
};
题目二:使用栈实现队列的下列操作:
push(x) – 将一个元素放入队列的尾部。
pop() – 从队列首部移除元素。
peek()