由于随便投的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; } } };