举一个例子比用文字解释它更容易。 从2个数组开始:
{a,a,a,a,a,a,a}和{ b , b , b }
我希望输出为:
{A,A,的 B'/ strong>下,A,A,的 B'/ strong>下,A,A,的 B'/ strong>下,一个}
在一点帮助下,我发现了以下内容:
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 :(得分:1)
略有非传统的方式:
对坐标为(0,0) - (A.Length, B.Length)
当x递增时 - 插入“a”,当y - 插入“b”时(通常情况下 - 使用相应数组的下一个索引)
答案 1 :(得分:0)
对于简单的应用程序,您可能会发现两个数组的大小。例如,假设第一阵列的大小为 M ,第二阵列的大小为 N 。还假设 M> = N (如果不是,您可以互换两个数组)。
现在,在插入第二个数组中的一个元素之前,您可以很容易地找到要插入的第一个数组的总元素,它等于: M / N ( = K ,说)。
因此,在合并时,您可以从First数组插入K个元素,然后从Second数组中插入一个元素,依此类推,直到两个数组都存在。