java - 混合两个数组
问题描述
我需要一些帮助。最近开始学习编程,我遇到了遇到问题的任务。任务是:有两个对象数组和步骤数。目标是合并它们,然后在每一步中,如果来自不同数组的两个对象相遇,则交换它们,但它们每个都只去一个方向。我不需要实现,只需要帮助算法。
数组 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++;
}
}
}
但这仅适用于一半的步骤。
谢谢你的帮助!
编辑:代码中的固定数组边界
解决方案
我看到的一个问题是你的 for 循环会遇到麻烦。你有for(int j = 0; j < mergedArray.size(); j++) { ... }
, 并且在你有的循环内,所以如果你不小心mergedArray.get(j+1)
,你会很快击中。ArrayOutOfBoundsException
除此之外,看起来很合理,我实现了一个类似的,它应该拆分的东西。
推荐阅读
- javascript - 如何按先出现的字母对元音和辅音进行排序并删除“空格”
- python - 如何使用coverge.py 覆盖多个测试文件
- python - Python 3 删除目录时出错 [WinError 32] 该进程无权访问该文件,因为它正被另一个进程使用
- c - 可以使用 fread() 来确定文件类型吗?
- python - 如何在 tkinter python 中没有按钮的输入小部件中获取用户输入?
- git - Git如何在一行中查看回购的前8个提交?
- css - 页面背景颜色或图像位于标题下
- c# - 我可以将更改保存到通过绑定直接在 XAML 中加载的 XML 文件吗?
- visual-studio-code - Gitlens在代码块之前导致换行
- reactjs - 如何让这些组件按钮在正确的卡片组件中呈现?