232.用栈实现队列
题目链接:力扣
看到题目的第一想法:
其实学过了数据结构了解到栈和队列这两种数据结构来做这道题还是会有点懵,这个是可以转换的吗?想了一会好像是可以实现,但想着就有点复杂,看了carl视频讲解的时候才懂如何简单的操作,思路还是很简单的
class MyQueue { public: stack<int> stIn; stack<int> stOut; MyQueue() { } void push(int x) { // 直接添加就好 stIn.push(x); } int pop() { if(stOut.empty()) { while(!stIn.empty()) { stOut.push(stIn.top()); stIn.pop(); } } int top = stOut.top(); stOut.pop(); return top; } int peek() { if(stOut.empty()) { while(!stIn.empty()) { stOut.push(stIn.top()); stIn.pop(); } } return stOut.top(); } bool empty() { if(stOut.empty() && stIn.empty()) return true; return false; } }; /** * Your MyQueue object will be instantiated and called as such: * MyQueue* obj = new MyQueue(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->peek(); * bool param_4 = obj->empty(); */
遇到的问题:
暂时没有遇到大的问题
225.用队列实现栈
题目链接:力扣
看到题目的第一想法:
看到这道题想了很久都没有好的思路,有一个循环弹出加入元素的方法感觉时间复杂度太高,看了carl哥的方法原来就是这样,那也没办法,最后还是简单的实现了出来
class MyStack { public: // 用一个队列来实现栈 queue<int> que; MyStack() { } void push(int x) { que.push(x); } int pop() { int size = que.size(); size--; while(size--) { que.push(que.front()); que.pop(); } int result = que.front(); que.pop(); return result; } int top() { return que.back(); } bool empty() { return que.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(); */
遇到的问题:
没有遇到太大的问题