什么是优雅的算法来混合两个数组(可能有不同大小)的元素,以便从每个数组以交替的方式绘制项目,剩余的添加到结尾?
例如
阵列1-A,B,C,D,E,F,G
阵列2 - 1,2,3,4
混合阵列 - A,1,B,2,C,3,D,4,E,F,G
我更喜欢C#中的解决方案,但我应该能够以任何语言(甚至某种形式的伪代码)读取和转置解决方案.
不要担心空检查或任何其他边缘情况,我会处理这些.
你的意思是什么?
// naive/boring approach
int i = 0;
int m = 0;
while (i < a1.size() || i < a2.size()) {
if (i < a1.size())
mixed[m++] = a1[i];
if (i < a2.size())
mixed[m++] = a2[i];
i++;
}
Run Code Online (Sandbox Code Playgroud)
如果使用它,您可能希望将数组长度存储在变量中,这样您就不必继续调用size()方法(或者使用您使用的任何语言).