This commit is contained in:
2026-07-23 16:56:50 +08:00
parent 124ad9afdf
commit 92784ffb0f
36 changed files with 2015 additions and 608 deletions
+31 -49
View File
@@ -5,57 +5,39 @@ import (
"testing"
)
// https://leetcode.cn/problems/min-stack/description/?envType=study-plan-v2&envId=top-100-liked
// https://leetcode.cn/problems/valid-parentheses/description/?envType=study-plan-v2&envId=top-100-liked
type MinStack struct {
slice []int
minSlice []int // 记录每个层级的最小值
}
func Constructor() MinStack {
return MinStack{}
}
func (this *MinStack) Push(value int) {
if len(this.slice) == 0 {
this.minSlice = append(this.minSlice, value)
} else {
this.minSlice = append(this.minSlice, min(this.minSlice[len(this.minSlice)-1], value))
func isValid(s string) bool {
stack := []rune{}
for _, c := range s {
if c == '(' || c == '[' || c == '{' {
stack = append(stack, c)
} else {
if len(stack) == 0 {
return false
}
pre := stack[len(stack)-1]
stack = stack[:len(stack)-1]
if c == ')' && pre != '(' {
return false
}
if c == ']' && pre != '[' {
return false
}
if c == '}' && pre != '{' {
return false
}
}
}
this.slice = append(this.slice, value)
return len(stack) == 0
}
func (this *MinStack) Pop() {
this.slice = this.slice[:len(this.slice)-1]
this.minSlice = this.minSlice[:len(this.minSlice)-1]
}
func (this *MinStack) Top() int {
return this.slice[len(this.slice)-1]
}
func (this *MinStack) GetMin() int {
return this.minSlice[len(this.minSlice)-1]
}
func Test1(t *testing.T) {
minStack := Constructor()
minStack.Push(-2)
minStack.Push(0)
minStack.Push(-3)
fmt.Println(minStack.GetMin())
minStack.Pop()
fmt.Println(minStack.Top())
fmt.Println(minStack.GetMin())
}
func Test2(t *testing.T) {
minStack := Constructor()
minStack.Push(1)
minStack.Push(2)
fmt.Println(minStack.Top())
fmt.Println(minStack.GetMin())
minStack.Pop()
fmt.Println(minStack.GetMin())
fmt.Println(minStack.Top())
func Test(t *testing.T) {
fmt.Println(isValid("()"))
fmt.Println(isValid("()[]{}"))
fmt.Println(isValid("(]"))
fmt.Println(isValid("([])"))
fmt.Println(isValid("([)]"))
fmt.Println(isValid("("))
fmt.Println(isValid("]"))
}