|  | @@ -0,0 +1,85 @@
 | 
											
												
													
														|  | 
 |  | +type MyQueue struct {
 | 
											
												
													
														|  | 
 |  | +	Stack MyStack
 | 
											
												
													
														|  | 
 |  | +	Queue MyStack
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +/** Initialize your data structure here. */
 | 
											
												
													
														|  | 
 |  | +func Constructor() MyQueue {
 | 
											
												
													
														|  | 
 |  | +	return MyQueue{make([]int, 0), make([]int, 0)}
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +/** Push element x to the back of queue. */
 | 
											
												
													
														|  | 
 |  | +func (this *MyQueue) Push(x int)  {
 | 
											
												
													
														|  | 
 |  | +	for !this.Queue.Empty() {
 | 
											
												
													
														|  | 
 |  | +		this.Stack.Push(this.Queue.Pop())
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	this.Stack.Push(x)
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +/** Removes the element from in front of queue and returns that element. */
 | 
											
												
													
														|  | 
 |  | +func (this *MyQueue) Pop() int {
 | 
											
												
													
														|  | 
 |  | +	for !this.Stack.Empty() {
 | 
											
												
													
														|  | 
 |  | +		this.Queue.Push(this.Stack.Pop())
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	return this.Queue.Pop()
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +/** Get the front element. */
 | 
											
												
													
														|  | 
 |  | +func (this *MyQueue) Peek() int {
 | 
											
												
													
														|  | 
 |  | +	for !this.Stack.Empty() {
 | 
											
												
													
														|  | 
 |  | +		this.Queue.Push(this.Stack.Pop())
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	return this.Queue.Peek()
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +/** Returns whether the queue is empty. */
 | 
											
												
													
														|  | 
 |  | +func (this *MyQueue) Empty() bool {
 | 
											
												
													
														|  | 
 |  | +	return this.Stack.Empty() && this.Queue.Empty()
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +/**
 | 
											
												
													
														|  | 
 |  | + * Your MyQueue object will be instantiated and called as such:
 | 
											
												
													
														|  | 
 |  | + * obj := Constructor();
 | 
											
												
													
														|  | 
 |  | + * obj.Push(x);
 | 
											
												
													
														|  | 
 |  | + * param_2 := obj.Pop();
 | 
											
												
													
														|  | 
 |  | + * param_3 := obj.Peek();
 | 
											
												
													
														|  | 
 |  | + * param_4 := obj.Empty();
 | 
											
												
													
														|  | 
 |  | + */
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +type MyStack []int
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (s MyStack) Size() int {
 | 
											
												
													
														|  | 
 |  | +	return len(s)
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (s MyStack) Empty() bool {
 | 
											
												
													
														|  | 
 |  | +	return len(s) == 0
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (s MyStack) Peek() int {
 | 
											
												
													
														|  | 
 |  | +	return s[len(s)-1]
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (s *MyStack) Push(x int) {
 | 
											
												
													
														|  | 
 |  | +	*s = append(*s, x)
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (s *MyStack) Pop() int {
 | 
											
												
													
														|  | 
 |  | +	n := len(*s)
 | 
											
												
													
														|  | 
 |  | +	top := (*s)[n-1]
 | 
											
												
													
														|  | 
 |  | +	*s = (*s)[:n-1]
 | 
											
												
													
														|  | 
 |  | +	return top
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 |