首页 > 解决方案 > 混合两个数组

问题描述

我需要一些帮助。最近开始学习编程,我遇到了遇到问题的任务。任务是:有两个对象数组和步骤数。目标是合并它们,然后在每一步中,如果来自不同数组的两个对象相遇,则交换它们,但它们每个都只去一个方向。我不需要实现,只需要帮助算法。

数组 1:A、B、C
数组 2:1,2,3(这两个数组每个都可以大于 3 个对象并且没有
 长度相同)
合并数组:A,B,C,1,2,3
步数:5

第 1 步:A、B、1、C、2、3

第 2 步:A,1,B,2,C,3

步骤 3:1,A,2,B,3,C

步骤 4:1,2,A,3,B,C

步骤 5:1,2,3,A,B,C

我的尝试是:

public void Move(int steps)
    { for (int i = 0; i<steps; i++)
        {for (int j = 0; j<mergedArray.size()-1; j++){
        if (!mergedArray.get(j).getType().equals(mergedArray.get(j+1).getType()))
                { Collections.swap(mergedArray, j, j+1);
                j++;
                }
        }
    }

但这仅适用于一半的步骤。

谢谢你的帮助!

编辑:代码中的固定数组边界

标签: javaarraysalgorithm

解决方案


我看到的一个问题是你的 for 循环会遇到麻烦。你有for(int j = 0; j < mergedArray.size(); j++) { ... }, 并且在你有的循环内,所以如果你不小心mergedArray.get(j+1),你会很快击中。ArrayOutOfBoundsException除此之外,看起来很合理,我实现了一个类似的,它应该拆分的东西。


推荐阅读