From dca74915b4c999ae88f9f7175eca5866ac1ea543 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Mon, 12 Aug 2024 23:43:50 +0200 Subject: [PATCH] =?UTF-8?q?go:=20add=20=C2=AB735.=20Asteroid=20Collision?= =?UTF-8?q?=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- go/asteroid-collision.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 go/asteroid-collision.go diff --git a/go/asteroid-collision.go b/go/asteroid-collision.go new file mode 100644 index 0000000..d2edd03 --- /dev/null +++ b/go/asteroid-collision.go @@ -0,0 +1,33 @@ +package main + +import as "github.com/emirpasic/gods/v2/stacks/arraystack" + +func asteroidCollision(asteroids []int) []int { + st := as.New[int]() + + for _, asteroid := range asteroids { + alive := true + + for top, ok := st.Peek(); ok && asteroid < 0 && top > 0; top, ok = st.Peek() { + if top < -asteroid { + st.Pop() + continue + } else if top == -asteroid { + st.Pop() + } + + alive = false + break + } + + if alive { + st.Push(asteroid) + } + } + + result := make([]int, st.Size()) + for i := st.Size() - 1; i >= 0; i-- { + result[i], _ = st.Pop() + } + return result +}