Leetcode 225. Implement Stack using Queues

题目概述

算法性能

我的思路

这题和232. Implement Queue using Stacks非常像,所以我一开始想着能否用232的思路去解决它:尝试搞俩队列,让队列中元素的出队顺序和栈的元素出栈顺序一致。这是比较容易实现的,只要每次push第i个元素x_i的时候,我们总让现有的所有元素都在某个队列中(记做A_i),另一个队列(B_i)为空,这时我们把x_i存入B_i,再让A_i中的元素全部pop出来进入B_i,这样就实现了新加入元素位于一个队列的顶部,从而让队列元素出队顺序与栈中元素出栈顺序一致。当然,这个做法同样可以用一个队列实现,不过此时我们需要维护一个计数器,来统计当前队列中元素的个数。

附上代码:

class MyStack {
private:
	queue<int> q;
    int sizes;
public:
	/** Push element x onto stack. */
	void push(int x) {
        q.push(x);
		int temp;
        for(int qi = 0; qi < sizes; ++qi)
        {
            q.push(q.front());
            q.pop();
        }
        sizes++;
        
	}

	/** Removes the element on top of the stack and returns that element. */
	int pop() {
        int res = q.front();
        q.pop();
        sizes--;
		return res;
	}

	/** Get the top element. */
	int top() {
		return q.front();
	}

	/** Returns whether the stack is empty. */
	bool empty() {
		if (q.empty())
			return true;
		return false;
	}
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值