如何组合两个数组,使两者平均分布?



举一个例子比用文字解释要容易得多。 从 2 个数组开始:

{a,a,a,a,a,a,a} 和 {b,b,b}

我希望输出是:

{a,a,b,a,a,b,a,b,a}

在一点帮助下,我发现了以下内容:

let result = [];
let ratio = array1.length / array2.length;
let pushA = 0;
while (array2.length >0) {
pushA+= ratio;
while (pushA >= 1){
result.push(array1.pop());
pushA--;
}
result.push(array2.pop());
}
return result;

稍微非传统的方式:

对具有坐标(0,0) - (A.Length, B.Length)的线段使用布雷森汉姆算法的最简单实现

当 x 递增时 - 插入"a",当 y - 插入"b"(一般情况下 - 使用相应数组中的下一个索引)

对于简单的应用程序,您可能会找到两个数组的大小。例如,假设拳头数组的大小为M,第二个数组的大小为N。还假设M>=N(如果不是,您可以互换两个数组)。

现在,在插入第二个数组中的一个元素之前,您可以轻松找到要插入的第一个数组的总元素,它等于:M/N(= K,说)。

因此,在合并时,您可以插入第一个数组中的 K 个元素,然后插入第二个数组中的一个元素,依此类推,直到两个数组中都存在元素。

最新更新