解題思路
用兩個 stack 來模擬,一個用來 push 的時候能塞到最後,一個用來 pop 的時候能拿到最前面的值。
注意每次都要先確保把另一個 stack 的東西搬過來。
程式碼
class MyQueue { public: stack<int> s1; // for push stack<int> s2; // for pop MyQueue() { } void push(int x) { while(!s2.empty()) { s1.push(s2.top()); s2.pop(); } s1.push(x); } int pop() { while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } int top = s2.top(); s2.pop(); return top; } int peek() { while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } return s2.top(); } bool empty() { return s1.empty() && s2.empty(); } };
沒有留言:
張貼留言