添加新题目

This commit is contained in:
2025-08-22 04:31:58 +08:00
parent 1f832e271e
commit 62034548cc
5 changed files with 279 additions and 43 deletions

View File

@@ -0,0 +1,89 @@
package main
import "fmt"
func main() {
fmt.Println(minWindow("baABabbb", "A"))
}
func minWindow(s string, t string) string {
return ""
}
//func minWindow(s string, t string) string {
// if len(s) < len(t) {
// return ""
// }
// //fmt.Println("1")
// minstr := ""
// numstr := make([]int, 256)
// num := 0
// for _, ch := range t {
//
// //fmt.Println("ch", ch, 'a')
// numstr[ch]++
// num++
// }
//
// for i := 0; i < len(s); i++ {
// //fmt.Println("1")
// if int(s[i]) >= len(numstr) {
// //fmt.Println("2")
// continue
// }
// //fmt.Println("------当前i,", i)
// //fmt.Println("numstr[s[i]]", numstr[s[i]])
// if numstr[s[i]] > 0 {
// tmpnum := num
// tmpstr := make([]int, 256)
// copy(tmpstr, numstr)
// tmpstr[s[i]] -= 1
// tmpnum--
// p := i + 1
// for p < len(s) {
// if tmpnum == 0 {
// //fmt.Println("退出循环")
// break
// }
// //fmt.Println("当前p", p, "指向:", string(s[p]))
// //fmt.Println("tmpstr", tmpstr)
// if int(s[p]) >= len(tmpstr) {
// p++
// //fmt.Println("跳过")
// continue
// }
//
// if tmpstr[s[p]] > 0 {
// tmpstr[s[p]] -= 1
// tmpnum--
//
// //fmt.Println("修改后的tmpstr", tmpstr)
//
// }
// //fmt.Println("1")
// p++
// }
// //fmt.Println("本次循环中tmpnum为", tmpnum)
// if tmpnum == 0 {
// //fmt.Println("匹配到目标")
// if len(minstr) == 0 {
// minstr = s[i:p]
// } else {
// if (p - i) < len(minstr) {
// minstr = s[i:p]
// }
// }
//
// } else {
// continue
//
// }
//
// } else {
// continue
// }
// //fmt.Println("------退出第", i, "次循环minstr为", minstr)
// }
//
// return minstr
//}

View File

@@ -1,58 +1,51 @@
package main package main
import ( import "fmt"
"fmt"
"sort"
)
func main() { func main() {
var a []int fmt.Println(maxSlidingWindow([]int{7, 2, 4}, 2))
a[0] = 1
fmt.Println(a[1])
//fmt.Println(maxSlidingWindow([]int{1, 3, -1, -3, 5, 3, 6, 7}, 3))
} }
func maxSlidingWindow(nums []int, k int) []int { func maxSlidingWindow(nums []int, k int) []int {
queue := make([]int, k) if k > len(nums) {
result := make([]int, 0) return []int(nil)
for i := 0; i < k; i++ {
queue[i] = nums[i]
} }
maxnum := 0 numlist := make([]int, 0, k)
for i := 0; i < len(nums)-k+1; i++ { result := make([]int, 0)
if i == 0 {
queuetmp := make([]int, len(queue))
copy(queuetmp, queue) // 深拷贝
sort.Ints(queuetmp)
maxnum = queuetmp[k-1]
result = append(result, queuetmp[k-1])
//fmt.Println("result:", result) for i := 0; i < len(nums); i++ {
if len(numlist) == 0 {
numlist = append(numlist, i)
if i >= k-1 {
result = append(result, nums[numlist[0]])
}
continue continue
} }
fmt.Println("queue分割前", queue) if numlist[0] <= i-k {
queueA := queue[1:] numlist = numlist[1:]
//fmt.Println("queueA", queueA) }
queueA = append(queueA, nums[i+k-1]) p := len(numlist) - 1
queue = queueA //fmt.Println(numlist)
fmt.Println("max", maxnum) for {
fmt.Println("当前右边界:", nums[i+k-1]) if len(numlist) == 0 || p < 0 {
if nums[i+k-1] >= maxnum { break
maxnum = nums[i+k-1] }
result = append(result, nums[i+k-1]) if nums[numlist[p]] < nums[i] {
p--
} else { } else {
queuetmp := make([]int, len(queue)) break
copy(queuetmp, queue) // 深拷贝
sort.Ints(queuetmp)
result = append(result, queuetmp[k-1])
} }
//
//fmt.Println("queueA2", queueA)
//fmt.Println("queueA", queue)
fmt.Println("result:", result)
} }
numlist = numlist[:p+1]
if len(numlist) < k {
numlist = append(numlist, i)
} else {
numlist = append(numlist[1:], i)
}
if i >= k-1 {
result = append(result, nums[numlist[0]])
}
}
//fmt.Println("result", result)
return result return result
} }
@@ -144,6 +137,50 @@ func maxSlidingWindow(nums []int, k int) []int {
// return result // return result
//} //}
//func maxSlidingWindow(nums []int, k int) []int {
// queue := make([]int, k)
// result := make([]int, 0)
// for i := 0; i < k; i++ {
// queue[i] = nums[i]
// }
// maxnum := 0
// for i := 0; i < len(nums)-k+1; i++ {
// if i == 0 {
// queuetmp := make([]int, len(queue))
// copy(queuetmp, queue) // 深拷贝
// sort.Ints(queuetmp)
// maxnum = queuetmp[k-1]
// result = append(result, queuetmp[k-1])
//
// //fmt.Println("result:", result)
// continue
// }
// fmt.Println("queue分割前", queue)
// queueA := queue[1:]
// //fmt.Println("queueA", queueA)
// queueA = append(queueA, nums[i+k-1])
// queue = queueA
// fmt.Println("max", maxnum)
// fmt.Println("当前右边界:", nums[i+k-1])
// if nums[i+k-1] >= maxnum {
// maxnum = nums[i+k-1]
// result = append(result, nums[i+k-1])
// } else {
// queuetmp := make([]int, len(queue))
// copy(queuetmp, queue) // 深拷贝
// sort.Ints(queuetmp)
// result = append(result, queuetmp[k-1])
// }
// //
//
// //fmt.Println("queueA2", queueA)
// //fmt.Println("queueA", queue)
//
// fmt.Println("result:", result)
// }
// return result
//}
//func maxSlidingWindow(nums []int, k int) []int { //func maxSlidingWindow(nums []int, k int) []int {
// result := make([]int, 0) // result := make([]int, 0)
// nowmax := 0 // nowmax := 0

View File

@@ -0,0 +1,49 @@
package main
import (
"fmt"
"sort"
)
func main() {
fmt.Println(firstMissingPositive([]int{1000, -1}))
}
func firstMissingPositive(nums []int) int {
if len(nums) == 1 {
if nums[0] == 1 {
return 2
}
return 1
}
numlist := make([]int, 0)
for i := 0; i < len(nums); i++ {
if nums[i] > 0 {
numlist = append(numlist, nums[i])
}
}
sort.Ints(numlist)
fmt.Println(numlist)
slow, fast := 0, 1
if len(numlist) == 0 {
return 1
}
if numlist[0] != 1 {
return 1
}
for slow <= fast && slow <= len(numlist)-1 && fast <= len(numlist)-1 {
if numlist[fast] == numlist[slow]+1 || numlist[fast] == numlist[slow] {
fmt.Println("相等")
fmt.Println("当前", numlist[fast], numlist[slow]+1)
slow++
fast = slow + 1
continue
} else {
break
}
}
return numlist[slow] + 1
}

View File

@@ -0,0 +1,52 @@
package main
import "fmt"
func main() {
fmt.Println(productExceptSelf([]int{1, 2, 3, 4}))
}
func productExceptSelf(nums []int) []int {
before := make([]int, len(nums))
after := make([]int, len(nums))
result := make([]int, len(nums))
value1 := 1
value2 := 1
for i := 0; i < len(nums); i++ {
if i == 0 {
before[i] = 0
continue
}
//fmt.Println("value:", value1)
value1 = nums[i-1] * value1
//fmt.Println("nums[i-1]:", nums[i-1])
before[i] = value1
}
for i := len(nums) - 1; i >= 0; i-- {
//fmt.Println("循环到:", nums[i])
if i == len(nums)-1 {
after[i] = 0
continue
}
value2 *= nums[i+1]
after[i] = value2
}
for i := 0; i < len(nums); i++ {
if i == 0 {
result[i] = after[i]
continue
}
if i == len(nums)-1 {
result[i] = before[i]
continue
}
result[i] = before[i] * after[i]
}
//fmt.Println(before)
//fmt.Println(after)
return result
}

View File

@@ -0,0 +1,9 @@
package main
func main() {
}
func setZeroes(matrix [][]int) {
}