NOTE
最小栈
最小栈 的 LeetCode 解题笔记。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 题目描述
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
2. 思路
- 思路一
- 由于栈的先入后出特性,可以额外使用一个最小栈来保存当前数组中最小的元素
3. 实现
type MinStack struct {
data []int
min []int
}
/** initialize your data structure here. */
func Constructor() MinStack {
return MinStack{
data: make([]int, 0),
min: make([]int, 0),
}
}
func (this *MinStack) Push(val int) {
if len(this.data) == 0 {
this.min = append(this.min, val)
}else {
top := this.min[len(this.min)-1]
if top < val {
this.min = append(this.min, top)
}else {
this.min = append(this.min, val)
}
}
this.data = append(this.data, val)
}
func (this *MinStack) Pop() {
if len(this.data) == 0 {
return
}
this.data = this.data[:len(this.data)-1]
this.min = this.min[:len(this.min)-1]
}
func (this *MinStack) Top() int {
if len(this.data) == 0{
return 0
}
return this.data[len(this.data)-1]
}
func (this *MinStack) GetMin() int {
if len(this.min) == 0{
return 0
}
return this.min[len(this.min)-1]
}
/**
* Your MinStack object will be instantiated and called as such:
* obj := Constructor();
* obj.Push(val);
* obj.Pop();
* param_3 := obj.Top();
* param_4 := obj.GetMin();
*/
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看