1 Star 0 Fork 0

Paulden/Algorithm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
min_stack.go 682 Bytes
一键复制 编辑 原始数据 按行查看 历史
Paulden 提交于 2022-08-21 11:17 . implement min stack
package stack
import "gitee.com/guuzaa/algorithm/constraints"
type MinStack[T constraints.Ordered] struct {
top *minNode[T]
}
type minNode[T constraints.Ordered] struct {
prev *minNode[T]
min, val T
}
func NewMinStack[T constraints.Ordered]() MinStack[T] {
return MinStack[T]{nil}
}
func (s *MinStack[T]) Push(val T) {
var n *minNode[T]
if s.top == nil || s.top.min > val {
n = &minNode[T]{s.top, val, val}
} else {
n = &minNode[T]{s.top, s.top.min, val}
}
s.top = n
}
func (s *MinStack[T]) Peek() T {
return s.top.val
}
func (s *MinStack[T]) GetMin() T {
return s.top.min
}
func (s *MinStack[T]) Pop() T {
n := s.top
s.top = s.top.prev
return n.val
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/guuzaa/algorithm.git
git@gitee.com:guuzaa/algorithm.git
guuzaa
algorithm
Algorithm
main

搜索帮助