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
+29 -48
View File
@@ -2,61 +2,42 @@ package top100liked
import (
"fmt"
"strings"
"testing"
"unicode"
)
// https://leetcode.cn/problems/daily-temperatures/?envType=study-plan-v2&envId=top-100-liked
// https://leetcode.cn/problems/decode-string/description/?envType=study-plan-v2&envId=top-100-liked
func dailyTemperatures(temperatures []int) []int {
res := make([]int, len(temperatures))
stack := make([]int, 0, len(temperatures))
for i := len(temperatures) - 1; i >= 0; i-- {
for len(stack) > 0 && temperatures[stack[len(stack)-1]] <= temperatures[i] {
stack = stack[:len(stack)-1]
func decodeString(s string) string {
curStr := ""
curNum := 0
strStack := []string{}
numStack := []int{}
for _, r := range s {
if unicode.IsDigit(r) {
curNum = curNum*10 + int(r-'0')
} else if unicode.IsLetter(r) {
curStr += string(r)
} else if r == '[' {
strStack = append(strStack, curStr)
curStr = ""
numStack = append(numStack, curNum)
curNum = 0
} else if r == ']' {
num := numStack[len(numStack)-1]
prevStr := strStack[len(strStack)-1]
numStack = numStack[:len(numStack)-1]
strStack = strStack[:len(strStack)-1]
curStr = prevStr + strings.Repeat(curStr, num)
}
if len(stack) > 0 {
res[i] = stack[len(stack)-1] - i
}
stack = append(stack, i)
}
return res
return curStr
}
// func dailyTemperatures(temperatures []int) []int {
// type item struct {
// Idx int
// Temp int
// }
// stack := []item{}
// res := make([]int, len(temperatures))
// for i := len(temperatures) - 1; i >= 0; i-- {
// cur := temperatures[i]
// if len(stack) == 0 {
// stack = append(stack, item{i, cur})
// res[i] = 0
// } else {
// for {
// if len(stack) == 0 {
// stack = append(stack, item{i, cur})
// res[i] = 0
// break
// }
// top := stack[len(stack)-1]
// if cur < top.Temp {
// res[i] = top.Idx - i
// stack = append(stack, item{i, cur})
// break
// } else {
// stack = stack[:len(stack)-1] // pop
// }
// }
// }
// }
// return res
// }
func Test(t *testing.T) {
fmt.Printf("%+v", dailyTemperatures([]int{73, 74, 75, 71, 69, 72, 76, 73}))
fmt.Println(decodeString("3[a]2[bc]"))
fmt.Println(decodeString("3[a2[c]]"))
fmt.Println(decodeString("2[abc]3[cd]ef"))
fmt.Println(decodeString("abc3[cd]xyz"))
}