Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 140 additions & 0 deletions codecov/abc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
//找到数组中的中位数 6 / 3 = 2
//[10,12,15,20,30,31]

package codecov

import (
"fmt"
"sort"
"strings"
)

const (
a = iota
b
c
d
)

type st struct {
A string
}

func ReverseWords2(s string) string {
source := strings.Fields(s)
fmt.Println(source)
an := len(source)
am := an / 2
for i := 0; i < am; i++ {
source[i], source[an-1-i] = source[an-1-i], source[i]
}
return strings.Join(source, " ")
}
func ReverseWords(s string) string {
source := strings.Split(s, " ")
an := len(source)
am := an / 2
for i := 0; i < am; i++ {
left := reverse(source[i])
right := reverse(source[an-1-i])
source[i], source[an-1-i] = right, left
}

return strings.Join(source, " ")
}

func reverse(source string) string {
b := []rune(source) //中文
n := len(b)
mid := n / 2
for i := 0; i < mid; i++ {
b[i], b[n-1-i] = b[n-1-i], b[i]
}
return string(b)
}

func Append(ss []int) {
ss = append(ss, 5)
}

func boyun(arr []int) int {
sum := 0
l := len(arr)
if l == 0 {
return 0
}
if l < 2 {
return arr[0]
}
for _, v := range arr {
sum += v
}
mid := sum / l
fmt.Printf("sum=%d, len=%d,mid=%d", sum, l, mid)

//排序
sort.Ints(arr)

var result int
for i := 0; i < l/2; i++ {
//头,尾对撞,快速查找

//处理左半部分
left := arr[i]
right := arr[i+1]
result_left := search(left, mid, right)

//右半部分
right_left := arr[l-2]
right_right := arr[l-1]
result_right := search(right_left, mid, right_right)

if result_left < result_right {
result = result_left
} else {
result = result_right
}

}

return result
}

func search(left, mid, right int) (result int) {
if left < mid && mid < right {
//[10,12,15,20,30,31]
ll := result - left //1
rr := right - result //2
//找到
if ll < rr {
return left
} else {
return right
}
}
return
}

func maxChildArr(arr []int, count int) (int, []int) {

// l := len(arr)
// mid := l / 2
if count <= 0 {
return 0, nil
}

max, begin, k := 1, 0, 1
for idx, _ := range arr {
if idx > 0 && arr[idx] > arr[idx-1] {
k++
} else {
k = 1
}
if k > max {
max = k

begin = idx - max + 1
}
}
return max, arr[begin : begin+max]
}