什么是将元素混合在两个数组(可能大小不同)中以便以交替方式从每个数组中绘制元素并将剩余元素添加到末尾的优雅算法?
例如
数组 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# 中的解决方案,但我应该能够阅读和转换任何语言(甚至某种形式的伪代码)的解决方案。
不要担心 null 检查或任何其他边缘情况,我会处理这些。
最佳答案
您的意思与此类似?
// 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++;
}
如果您使用它,您可能希望将数组长度存储在变量中,这样您就不必继续调用 size() 方法(或您使用的任何语言的任何方法)。
关于algorithm - 通过交替元素混合两个数组( zipper 样式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/684465/