package main
import (
"fmt"
)
//数组平分
func splitArray(arr []int, num int) [][]int {
arrLen := len(arr)
if arrLen < num {
return [][]int{arr} // 数组大小 小于 等分时,直接返回原数组
}
// 获取数组分割为多少份
var quantity int
if arrLen % num == 0 {
quantity = arrLen / num
} else {
quantity = (arrLen / num) + 1
}
// 声明分割好的二维数组
segments := make([][]int,0)
// 声明分割数组的截止
var s,end int
for i := 1; i <= num; i++ {
end = i * quantity
if i != num {
segments = append(segments,arr[i-1+s:end])
}else {
segments = append(segments,arr[i-1+s:])
}
s = end-i
}
return segments
}
func main() {
/*
问题描述: 将一个数组 n 等分。
问题示例: 输入: [1, 2, 3, 4, 5] 输出: 三等分:[[1, 2], [3, 4], [5]] 二等分: [[1, 2, 3], [4, 5]]
*/
var (
a = []int{1, 2, 3, 4, 5}
b = 3
)
fmt.Println(splitArray(a,b))
}