脚本宝典收集整理的这篇文章主要介绍了leetcode225_用队列实现栈,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
其实一个队列就可以了,就是我们使用一个队列,当需要查询stack头部的元素的时候,可以将其他元素弹出,然后压如的元素底部。
这样pop是O(n)的操作,而其他的是O(1)的操作(如果不考虑queue内部实现复杂度的话)
class MyStack { public: queue<int> pre; MyStack() { } void push(int x) { pre.push(x); } int pop() { int size = pre.size(); size = size-1; //弹出n-1个数字,然后重新压如 while(size){ int num = pre.front(); pre.pop(); pre.push(num); size--; } int num_pre = pre.front(); pre.pop(); return num_pre; } int top() { int size = pre.size(); size = size-1; //弹出n-1个数字,然后重新压如 while(size){ int num = pre.front(); pre.pop(); pre.push(num); size--; } int num_pre = pre.front(); pre.pop(); pre.push(num_pre); return num_pre; } bool empty() { return pre.empty(); } }; /** * Your MyStack object will be instantiated and called as such: * MyStack* obj = new MyStack(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->top(); * bool param_4 = obj->empty(); */
以上是脚本宝典为你收集整理的leetcode225_用队列实现栈全部内容,希望文章能够帮你解决leetcode225_用队列实现栈所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。