class MyStack { /* Method2: push:O(n) pop:O(1) top:O(1) Logic: 1. new element always locates at the first element in q1: How? - add new element in empty q2 - append evry single element in q1 to q2 - swap q1 and q2 3. first is pop and top since it is the newest element private Queueq1 = new LinkedList (); private Queue q2 = new LinkedList (); // Push element x onto stack. public void push(int x) { q2.offer(x); while ( !q1.isEmpty() ) { q2.offer(q1.poll() ); } // swap Queue tmp = q1; q1 = q2; q2 = tmp; } // Removes the element on top of the stack. public void pop() { q1.poll();// the first element of q1 } // Get the top element. public int top() { return q1.peek(); } // Return whether the stack is empty. public boolean empty() { return q1.isEmpty(); } */ /* Method3: Push:O(1) Pop:O(n) Top:O(n) 1. push: append new element to q 2. pop and top: append all elements before that last element to last element in q1 */ private Queue q = new LinkedList (); public void push( int x) { q.offer(x); } public void pop() { // try to move the last index to the first index and use poll() // to remvoe it int size = q.size(); // 123458 => 812345 // 6 letter 5 times = 1 to size()-1 for ( int i =1; i < size; i++ ) { q.offer( q.poll() ); } q.poll(); } public int top() { int size = q.size(); for ( int i =1; i < size; i++) { q.offer(q.poll()); } int top = q.peek(); q.offer(q.poll()); return top; } public boolean empty() { return q.isEmpty(); } }
Saturday, July 11, 2015
[Leetcode]07/09 [Data Structure] Implement Stack using Queues
/*
Method1: two queues
Push:O(1)
Pop:O(n)
Top:O(n)
Logic:
1. push: append new element to q1
2. pop: mov all elements in q1 other than the last one to q2
and then remove the one left in q1
Method2:
push:O(n)
pop:O(1)
top:O(1)
Logic:
1. new element always locates at the first element in q1: when push, add new element in q2 and append all elements in q1 onto q2 one by one
2. swap q1 and q2
3. first is pop and top
Method3:
Push:O(1)
Pop:O(n)
Top:O(n)
1. push: append
2. pop and top: append all elements before that last element to last element in q1
*/
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment