代码随想录算法训练营Day10 | 232.用栈实现队列 225. 用队列实现栈
LeetCode 232.用栈实现队列
题目链接:LeetCode 232.用栈实现队列
思路:
1.用两个栈实现队列;
2.区别在于pop的时候,如果stOut为空,需将所有stIn元素压入stOut;
class MyQueue {
public:
stack<int> stIn;
stack<int> stOut;
MyQueue() {
}
void push(int x) {
stIn.push(x);
}
int pop() {
if(stOut.empty()){
while(!stIn.empty()){
stOut.push(stIn.top());
stIn.pop();
}
}
int result = stOut.top();
stOut.pop();
return result;
}
int peek() {
int result = this->pop();
stOut.push(result);
return result;
}
bool empty() {
return stIn.empty()&&stOut.empty();
}
};
注意 :
- pop函数需返回int
- peek事实上执行的是pop,再将值压回
LeetCode 225. 用队列实现栈
题目链接:LeetCode 225. 用队列实现栈
思路:
1.主要实现pop()函数,将queue的头部依次push至que的尾部
class MyStack {
public:
queue<int> que;
MyStack() {
}
void push(int x) {
que.push(x);
}
int pop() {
int size = que.size();
size--;
while (size--){
que.push(que.front());
que.pop();
}
int result = que.front();
que.pop();
return result;
}
int top() {
return que.back();
}
bool empty() {
return que.empty();
}
};
注意 :
- que的back是stack的top
- pop先保存result,后pop()
LeetCode 704 二分查找
题目链接:LeetCode 704 二分查找
思路:
注意 :
1.
2.
3.
4.
LeetCode 704 二分查找
题目链接:LeetCode 704 二分查找
思路:
注意 :
1.
2.
3.
4.