由于随便投的G社简历居然过初筛了,本着有那么一丢丢希望还是要拼一把的心理还是要准备一下,死皮赖脸让对象晚上看我编程暴露了一堆问题,写之前不沟通 代码逻辑 代码风格 变量名…………而且第一道题出现的错误第二个还会出现……
两个栈模拟队列,牛客网上都做过……
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
if(stack2.empty())
while(!stack1.empty())
{
int tmp=stack1.top();
stack1.pop();
stack2.push(tmp);
}
int x=stack2.top();
stack2.pop();
return x;
}
private:
stack<int> stack1;
stack<int> stack2;
};
第一次WA是pop没写if判断当前栈是否为空,好歹是12分钟之内写出来的……也算勉强说得过去了
两个队列模拟栈
这个题错的啊……简直考验我对象的耐心 /哭笑
复制粘贴代码太多了,一点都不优美……嘤嘤嘤,贴一下自己丑陋的代码,嫌弃QAQ 没有必要用int x 定义的全局的queue就可以了,每次操作那个队列,还有就是多用三元运算符?:
class MyStack {
public:
/** Initialize your data structure here. */
int x;
queue<int>queue1;
queue<int>queue2;
MyStack() {
x=1;
}
/** Push element x onto stack. */
void push(int k) {
if(x==1)
queue1.push(k);
else
queue2.push(k);
}
/** Removes the element on top of the stack and returns that element. */
int pop() {
if(x==1)
{
int sz=queue1.size();
sz--;
while(sz--)
{
queue2.push(queue1.front());
queue1.pop();
}
int y=queue1.front();
queue1.pop();
x=2;
return y;
}
else if(x==2)
{
int sz=queue2.size();
sz--;
while(sz--)
{
queue1.push(queue2.front());
queue2.pop();
}
int y=queue2.front();
queue2.pop();
x=1;
return y;
}
}
/** Get the top element. */
int top() {
if(x==1)
{
int sz=queue1.size();
sz--;
while(sz--)
{
queue2.push(queue1.front());
queue1.pop();
}
int y=queue1.front();
queue1.pop();
queue2.push(y);
x=2;
return y;
}
else if(x==2)
{
int sz=queue2.size();
sz--;
while(sz--)
{
queue1.push(queue2.front());
queue2.pop();
}
int y=queue2.front();
queue1.push(y);
queue2.pop();
x=1;
return y;
}
}
/** Returns whether the stack is empty. */
bool empty() {
if(x==1)
{
if(queue1.empty())
return true;
else return false;
}
else if(x==2)
{
if(queue2.empty())
return true;
else return false;
}
}
};