每日一题 【每日一题】数组之四-Python

Jack · 2021年08月19日 · 最后由 lework 回复于 2021年12月19日 · 82 次阅读
本帖已被设为精华帖!
  1. 问题描述: 将一个数组 n 等分。
  2. 问题示例: 输入: [1, 2, 3, 4, 5] 输出: 三等分:[[1, 2], [3, 4], [5]] 二等分: [[1, 2, 3], [4, 5]]
Jack 将本帖设为了精华贴 08月19日 21:37

参考代码:

from math import ceil
def divide_iter(lst, n):
    if n <= 0:
        yield lst
        return
    i, div = 0, ceil(len(lst) / n)
    while i < n:
        yield lst[i * div: (i + 1) * div]
        i += 1
list(divide_iter([1, 2, 3, 4, 5], 2))
list_input=[int(x) for x in input().split(",")]
print("数组:",list_input)
sub_num=int(input())
print(str(sub_num)+"等分")
result_list=[]
a=[]
count=1
for index in range(len(list_input)):
    a.append(list_input[index])
    if index== (count*(sub_num-1)):
        count=count+1
        result_list.append(a)
        a=[]
result_list.append(a)
print(result_list)
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))

}
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册