- 最近看到一个 JavaScript 的题,自己做了一下,又在网上找了类似的答案,这个题目是这样的
- 给定整数 n 和 m,写一个函数 dispatch,把 n 尽量平分成 m 个数组
1. 不规定整数的顺序
function dispatch (n, m) {
var i,j,arrays = [];
for (let i = 0; i < m; i++) {
arrays.push([]);
}
for(i = 1, j = 0; i<= n; i++, j = (j + 1) % m) {
arrays[j].push(i)
}
return arrays;
}
console.log(dispatch(10,6))
[ [ 1, 7 ], [ 2, 8 ], [ 3, 9 ], [ 4, 10 ], [ 5 ], [ 6 ] ]
2. 规定整数顺序
function dispatch (n,m) {
let average;
let c = 1;
let arr = [];
average = Math.floor(n/m)
for(let i = 0; i < m ; i++) {
arr.push([])
for(let j = 0; j < (i < n % m ? average + 1 : average); j ++) {
arr[i].push(c++)
}
}
return arr
}
console.log(dispatch1(10,6))
[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9 ], [ 10 ] ]
网友评论