algorithm - 通过交替元素混合两个数组( zipper 样式)

标签 algorithm

什么是将元素混合在两个数组(可能大小不同)中以便以交替方式从每个数组中绘制元素并将剩余元素添加到末尾的优雅算法?

例如

数组 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/

相关文章:

创建一个结构体来创建列表并在调度算法中使用

c++ - std::sort 对数组和索引列表进行排序?

algorithm - 时间太复杂的算法示例?

algorithm - 相反方向的插入排序。已排序部分在右侧,未排序部分在左侧

c++ - 有效地填补有序数字列表中的第一个空白

c# - 如何在 C# 中将小数舍入为特定分数?

c++ - 如何在给定触摸点列表的情况下检测摇动手势?

mysql 多列顺序

arrays - 如何通过跳过一些数字将数字插入到循环数组中?

algorithm - 在有向图中找到所有可能路径中的公共(public)路径