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