aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--232/go.mod5
-rw-r--r--232/go.sum2
-rw-r--r--232/main.go93
3 files changed, 100 insertions, 0 deletions
diff --git a/232/go.mod b/232/go.mod
new file mode 100644
index 0000000..8de9603
--- /dev/null
+++ b/232/go.mod
@@ -0,0 +1,5 @@
+module 232
+
+go 1.19
+
+require github.com/emirpasic/gods v1.18.1
diff --git a/232/go.sum b/232/go.sum
new file mode 100644
index 0000000..b5ad666
--- /dev/null
+++ b/232/go.sum
@@ -0,0 +1,2 @@
+github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
+github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
diff --git a/232/main.go b/232/main.go
new file mode 100644
index 0000000..718e526
--- /dev/null
+++ b/232/main.go
@@ -0,0 +1,93 @@
+package main
+
+import (
+ "fmt"
+
+ "github.com/emirpasic/gods/stacks/arraystack"
+)
+
+type MyQueue struct {
+ s1 *arraystack.Stack
+ s2 *arraystack.Stack
+}
+
+func Constructor() MyQueue {
+ s1 := arraystack.New()
+ s2 := arraystack.New()
+
+ q := MyQueue{s1: s1, s2: s2}
+
+ return q
+}
+
+func (this *MyQueue) Push(x int) {
+ this.s1.Push(x)
+}
+
+func (this *MyQueue) Pop() int {
+ for {
+ if val, ok := this.s1.Pop(); ok {
+ this.s2.Push(val)
+ } else {
+ break
+ }
+ }
+
+ val, _ := this.s2.Pop()
+
+ for {
+ if val, ok := this.s2.Pop(); ok {
+ this.s1.Push(val)
+ } else {
+ break
+ }
+ }
+
+ return val.(int)
+}
+
+func (this *MyQueue) Peek() int {
+ for {
+ if val, ok := this.s1.Pop(); ok {
+ this.s2.Push(val)
+ } else {
+ break
+ }
+ }
+
+ val, _ := this.s2.Pop()
+ this.s2.Push(val)
+
+ for {
+ if val, ok := this.s2.Pop(); ok {
+ this.s1.Push(val)
+ } else {
+ break
+ }
+ }
+
+ return val.(int)
+
+}
+
+func (this *MyQueue) Empty() bool {
+ return this.s1.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();
+ */
+
+func main() {
+ obj := Constructor()
+ obj.Push(1)
+ obj.Push(2)
+ fmt.Println(obj.Peek())
+ fmt.Println(obj.Pop())
+ fmt.Println(obj.Empty())
+}