添加新题目
This commit is contained in:
57
普通数组/合并区间/main.go
Normal file
57
普通数组/合并区间/main.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
func main() {
|
||||
intervals := [][]int{
|
||||
{5, 5},
|
||||
{1, 3},
|
||||
{3, 5},
|
||||
{4, 6},
|
||||
{1, 1},
|
||||
{3, 3},
|
||||
{5, 6},
|
||||
{3, 3},
|
||||
{2, 4},
|
||||
{0, 0},
|
||||
}
|
||||
|
||||
merge(intervals)
|
||||
}
|
||||
|
||||
func merge(intervals [][]int) [][]int {
|
||||
sort.Slice(intervals, func(i, j int) bool {
|
||||
return intervals[i][0] < intervals[j][0]
|
||||
})
|
||||
//fmt.Println(intervals)
|
||||
tp2 := -1
|
||||
result := [][]int{}
|
||||
for i := 0; i < len(intervals); i++ {
|
||||
if intervals[i][0] < tp2 {
|
||||
continue
|
||||
}
|
||||
temp := make([]int, 0)
|
||||
temp = append(temp, intervals[i]...)
|
||||
|
||||
tp := intervals[i][1]
|
||||
//fmt.Println("当前tp1", tp)
|
||||
for j := i + 1; j < len(intervals); j++ {
|
||||
if intervals[j][0] <= tp {
|
||||
temp = append(temp, intervals[j]...)
|
||||
tp = max(intervals[j][1], tp)
|
||||
//fmt.Println("--", intervals[j][1], intervals[i][1])
|
||||
|
||||
//fmt.Println("当前tp", tp)
|
||||
}
|
||||
}
|
||||
//fmt.Println("temp", temp)
|
||||
//fmt.Println("当前tp", tp)
|
||||
tp2 = tp + 1
|
||||
sort.Ints(temp)
|
||||
result = append(result, []int{temp[0], temp[len(temp)-1]})
|
||||
}
|
||||
//fmt.Println(result)
|
||||
return result
|
||||
}
|
||||
40
普通数组/最大子数组和/main.go
Normal file
40
普通数组/最大子数组和/main.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println(maxSubArray([]int{-1, 0, -2}))
|
||||
}
|
||||
|
||||
func maxSubArray(nums []int) int {
|
||||
if len(nums) == 1 {
|
||||
return nums[0]
|
||||
}
|
||||
result := nums[0]
|
||||
value := 0
|
||||
tmp := make([]int, 0)
|
||||
for i := range nums {
|
||||
value += nums[i]
|
||||
tmp = append(tmp, value)
|
||||
}
|
||||
fmt.Println(tmp)
|
||||
minnum := make([]int, len(tmp)+1)
|
||||
minnum[0] = 0
|
||||
for i, v := range tmp {
|
||||
//fmt.Println("当前数字:", nums[i])
|
||||
minnum[i+1] = min(v, minnum[i])
|
||||
temp := tmp[i] - minnum[i]
|
||||
fmt.Println("当前temp", temp)
|
||||
|
||||
if result <= temp {
|
||||
result = temp
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fmt.Println("minnum", minnum)
|
||||
////fmt.Println("maxnum", maxnum)
|
||||
//fmt.Println(result)
|
||||
|
||||
return result
|
||||
}
|
||||
16
普通数组/轮转数组/main.go
Normal file
16
普通数组/轮转数组/main.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package main
|
||||
|
||||
func main() {
|
||||
rotate([]int{1, 2, 3, 4, 5, 6, 7}, 3)
|
||||
}
|
||||
|
||||
func rotate(nums []int, k int) {
|
||||
temp := make([]int, len(nums))
|
||||
for i := 0; i < len(nums); i++ {
|
||||
target := (i + k) % len(nums)
|
||||
temp[target] = nums[i]
|
||||
}
|
||||
for i := 0; i < len(nums); i++ {
|
||||
nums[i] = temp[i]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user