golang力扣leetcode 155.最小栈

简介: golang力扣leetcode 155.最小栈

题解

思路:两个栈,一个最小栈,push的时候如果不比最小的小,那么最小栈就接着push这个最小的数,这样就和pop形成了同步

代码

package main
import "math"
type MinStack struct {
  min   []int
  stack []int
}
func Constructor() MinStack {
  return MinStack{}
}
func (this *MinStack) Push(val int) {
  if val < this.GetMin() {
    this.min = append(this.min, val)
  } else {
    this.min = append(this.min, this.GetMin())
  }
  this.stack = append(this.stack, val)
}
func (this *MinStack) Pop() {
  if len(this.stack) == 0 {
    return
  }
  this.stack = this.stack[0 : len(this.stack)-1]
  this.min = this.min[0 : len(this.min)-1]
}
func (this *MinStack) Top() int {
  if len(this.stack) == 0 {
    return 0
  }
  return this.stack[len(this.stack)-1]
}
func (this *MinStack) GetMin() int {
  if len(this.min) == 0 {
    return math.MaxInt32
  } else {
    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();
 */
func main() {
}
目录
相关文章
|
2月前
|
算法 安全 测试技术
golang 栈数据结构的实现和应用
本文详细介绍了“栈”这一数据结构的特点,并用Golang实现栈。栈是一种FILO(First In Last Out,即先进后出或后进先出)的数据结构。文章展示了如何用slice和链表来实现栈,并通过golang benchmark测试了二者的性能差异。此外,还提供了几个使用栈结构解决的实际算法问题示例,如有效的括号匹配等。
golang 栈数据结构的实现和应用
|
1月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
1月前
【LeetCode 24】225.用队列实现栈
【LeetCode 24】225.用队列实现栈
12 0
|
1月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
78 0
|
1月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
30 0
|
1月前
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
52 0
|
1月前
|
算法
【LeetCode 23】232.用栈实现队列
【LeetCode 23】232.用栈实现队列
19 0
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
28 4
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 09. 用两个栈实现队列
使用两个栈实现队列的Python解决方案,包括初始化两个栈、实现在队列尾部添加整数的appendTail方法和在队列头部删除整数的deleteHead方法,以及相应的示例操作。
40 2
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行