【发布时间】:2021-10-05 11:05:35
【问题描述】:
我有以下问题,我需要将一个数组拆分为至少 n 个偶数块,但是每个数组的第一个元素除了第一个元素是前一个数组的最后一个元素。如果没有足够的元素,最后一个数组可以包含较少数量的元素。
~@trincot 发现的边缘情况
如果无法拆分为 n 个请求的块, 在可能的情况下拆分为最接近的块数。
输入:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
预期输出 n=3:
[[1, 2, 3, 4, 5], [5, 6, 8, 9, 10], [10, 11]]
我需要 JavaScript 的解决方案,但可以随意提交其他语言,我会翻译并提交 JavaScript 的解决方案。
我的尝试无效,我不知道如何从所需的块号开始,所以我在这里使用了块大小,打算稍后从块号中找出块大小。
let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
const range = 4;
const res = [array.slice(0, range)];
let start = range;
let end = range * 2;
while (true) {
console.log(start, end);
res.push(array.slice(start, end));
start += range;
end += range;
if (start >= array.length) {
break;
}
}
console.log(res);
【问题讨论】:
-
嗨,到目前为止,您尝试了什么?
-
我尝试编写一个工作解决方案约 2 小时,这是一个简单的问题,但我无法正确解决,真的不知道为什么。我的解决方案在输出的开始/结束时存在元素问题。所以我决定在这里发布它以节省时间和挫败感。
-
您可以展示您的解决方案并请求社区帮助修复它。
-
嗨@DamianGrzanka,我们理解你的感受!请分享您的代码。不工作也没关系
-
这能回答你的问题吗? Split array into chunks
标签: javascript arrays algorithm