LeetCode/go/asteroid-collision.go
Matej Focko dca74915b4
go: add «735. Asteroid Collision»
Signed-off-by: Matej Focko <me@mfocko.xyz>
2024-08-12 23:43:50 +02:00

33 lines
573 B
Go

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
}