添加新题目
This commit is contained in:
89
子串/最小覆盖子串/main.go
Normal file
89
子串/最小覆盖子串/main.go
Normal 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
|
||||||
|
//}
|
||||||
@@ -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] {
|
||||||
} else {
|
p--
|
||||||
queuetmp := make([]int, len(queue))
|
} else {
|
||||||
copy(queuetmp, queue) // 深拷贝
|
break
|
||||||
sort.Ints(queuetmp)
|
}
|
||||||
result = append(result, queuetmp[k-1])
|
}
|
||||||
|
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("queueA2", queueA)
|
|
||||||
//fmt.Println("queueA", queue)
|
|
||||||
|
|
||||||
fmt.Println("result:", result)
|
|
||||||
}
|
}
|
||||||
|
//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
|
||||||
|
|||||||
49
普通数组/缺失的第一个正数/main.go
Normal file
49
普通数组/缺失的第一个正数/main.go
Normal 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
|
||||||
|
}
|
||||||
52
普通数组/除自身以外数组的乘积/main.go
Normal file
52
普通数组/除自身以外数组的乘积/main.go
Normal 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
|
||||||
|
}
|
||||||
9
矩阵/矩阵置零/main.go
Normal file
9
矩阵/矩阵置零/main.go
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func setZeroes(matrix [][]int) {
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user