当前位置:网站首页>LeetCode算法日记:面试题 03.04. 化栈为队
LeetCode算法日记:面试题 03.04. 化栈为队
2022-08-03 03:38:00 【happykoi】
面试题 03.04. 化栈为队
日期:2022/8/2
题目描述:实现一个MyQueue类,该类用两个栈来实现一个队列。
示例:
MyQueue queue = new MyQueue();
queue.push(1);
queue.push(2);
queue.peek(); // 返回 1
queue.pop(); // 返回 1
queue.empty(); // 返回 false
思路:
peek或pop的时候,用s2存储s1的逆序,这样s2的尾就是s1的首,也就是需要输出的那个元素
代码+解析:
class MyQueue {
private:
stack<int> s1;
public:
/** Initialize your data structure here. */
MyQueue() {
}
/** Push element x to the back of queue. */
void push(int x) {
s1.push(x);
}
/** Removes the element from in front of queue and returns that element. */
int pop() {
stack<int> temp = s1;
stack<int> s2;
while(!s1.empty()){
s2.push(s1.top());
s1.pop();
}
int res = s2.top();
s2.pop();
while(s1.size() < temp.size()-1){
s1.push(s2.top());
s2.pop();
}
return res;
}
/** Get the front element. */
int peek() {
stack<int> temp = s1;
stack<int> s2;
while(!temp.empty()){
s2.push(temp.top());
temp.pop();
}
return s2.top();
}
/** Returns whether the queue is empty. */
bool empty() {
return s1.size() == 0;
}
};
/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue* obj = new MyQueue();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->peek();
* bool param_4 = obj->empty();
*/
边栏推荐
猜你喜欢
随机推荐
Best Practices for Migration from Jincang Database from MySQL to KingbaseES (3. MySQL Database Migration Practice)
Have bosses know date field flinksql is synchronized to the use of the null on how to deal with
AF-DNAT
肖sir__简历
Chapter 8 Character Input Output and Input Validation
path development介绍
什么是数据标注? 数据标注公司主要做什么?
【obs】启动推流失败 : Output.StartStreamFailed 调用流程
高等代数_证明_不同特征值的特征向量线性无关
SMP 需要考虑的事情
【基础数学--埃氏筛】204. 计数质数
conda常用命令合集
浅谈用KUSTO查询语言(KQL)在Azure Synapse Analytics(Azure SQL DW)审计某DB账号的操作记录
Auto.js Pro 计算脚本运行时间
程序包简单解释
谷粒商城一些疑问总结
ORACLE中文乱码
肖sir___面试就业课程____性能测试
(2022杭电多校五)1010-Bragging Dice (思维)
PyTorch安装——安装PyTorch前在conda搭建虚拟环境的报错