From 5d8aea00ce286e2851221efe4092d645d4ec0579 Mon Sep 17 00:00:00 2001 From: YDZ Date: Sat, 25 May 2019 15:44:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20problem=20225?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../225. Implement Stack using Queues.go | 47 +++++++++++++++++++ .../225. Implement Stack using Queues_test.go | 23 +++++++++ .../README.md | 36 ++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 Algorithms/225. Implement Stack using Queues/225. Implement Stack using Queues.go create mode 100644 Algorithms/225. Implement Stack using Queues/225. Implement Stack using Queues_test.go create mode 100644 Algorithms/225. Implement Stack using Queues/README.md diff --git a/Algorithms/225. Implement Stack using Queues/225. Implement Stack using Queues.go b/Algorithms/225. Implement Stack using Queues/225. Implement Stack using Queues.go new file mode 100644 index 00000000..92329f73 --- /dev/null +++ b/Algorithms/225. Implement Stack using Queues/225. Implement Stack using Queues.go @@ -0,0 +1,47 @@ +package leetcode + +type MyStack struct { + enque []int + deque []int +} + +/** Initialize your data structure here. */ +func Constructor_225() MyStack { + return MyStack{[]int{}, []int{}} +} + +/** Push element x onto stack. */ +func (this *MyStack) Push(x int) { + this.enque = append(this.enque, x) +} + +/** Removes the element on top of the stack and returns that element. */ +func (this *MyStack) Pop() int { + length := len(this.enque) + for i := 0; i < length-1; i++ { + this.deque = append(this.deque, this.enque[0]) + this.enque = this.enque[1:] + } + topEle := this.enque[0] + this.enque = this.deque + this.deque = nil + + return topEle +} + +/** Get the top element. */ +func (this *MyStack) Top() int { + topEle := this.Pop() + this.enque = append(this.enque, topEle) + + return topEle +} + +/** Returns whether the stack is empty. */ +func (this *MyStack) Empty() bool { + if len(this.enque) == 0 { + return true + } + + return false +} diff --git a/Algorithms/225. Implement Stack using Queues/225. Implement Stack using Queues_test.go b/Algorithms/225. Implement Stack using Queues/225. Implement Stack using Queues_test.go new file mode 100644 index 00000000..7985ea82 --- /dev/null +++ b/Algorithms/225. Implement Stack using Queues/225. Implement Stack using Queues_test.go @@ -0,0 +1,23 @@ +package leetcode + +import ( + "fmt" + "testing" +) + +func Test_Problem225(t *testing.T) { + obj := Constructor_225() + fmt.Printf("obj = %v\n", obj) + param_5 := obj.Empty() + fmt.Printf("param_5 = %v\n", param_5) + obj.Push(2) + fmt.Printf("obj = %v\n", obj) + obj.Push(10) + fmt.Printf("obj = %v\n", obj) + param_2 := obj.Pop() + fmt.Printf("param_2 = %v\n", param_2) + param_3 := obj.Top() + fmt.Printf("param_3 = %v\n", param_3) + param_4 := obj.Empty() + fmt.Printf("param_4 = %v\n", param_4) +} diff --git a/Algorithms/225. Implement Stack using Queues/README.md b/Algorithms/225. Implement Stack using Queues/README.md new file mode 100644 index 00000000..7a820da6 --- /dev/null +++ b/Algorithms/225. Implement Stack using Queues/README.md @@ -0,0 +1,36 @@ +# [225. Implement Stack using Queues](https://leetcode.com/problems/implement-stack-using-queues/) + +## 题目 + +Implement the following operations of a stack using queues. + +- push(x) -- Push element x onto stack. +- pop() -- Removes the element on top of the stack. +- top() -- Get the top element. +- empty() -- Return whether the stack is empty. + +Example : + +```c +MyStack stack = new MyStack(); + +stack.push(1); +stack.push(2); +stack.top(); // returns 2 +stack.pop(); // returns 2 +stack.empty(); // returns false +``` + +Note: + +- You must use only standard operations of a queue -- which means only push to back, peek/pop from front, size, and is empty operations are valid. +- Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue. +- You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack). + + +## 题目大意 + +题目要求用队列实现一个栈的基本操作:push(x)、pop()、top()、empty()。 + + +