【发布时间】:2016-05-29 02:35:25
【问题描述】:
我对 Java 很陌生,但我已经掌握了基础知识...
所以我有一个包含 4 个整数的数组,我需要将它们移到数组的前面,或者如果它们相等则合并它们:
- {0,1,0,2} 变成 {1,2,0,0}
- {2,1,0,2} 变成 {2,1,2,0}
- {1,1,0,0} 变成 {2,0,0,0}
- {0,2,0,2} 变成 {4,0,0,0}
- {1,1,3,3} 变成 {2,6,0,0}
- {2,2,2,2} 变成 {4,4,0,0} 等等...
这是我目前所拥有的:
public void combine(int[] row)
{
for (int i = 0; i < row.length-1; i++)
{
if (row[i] == 0 && row[i+1] > 0) //move
{
row[i] = row[i+1];
row[i+1] = 0;
}
if (row [i] == row[i+1] && row[i] > 0) //merge
{
row[i] = 2 * row[i];
row[i+1] = 0;
}
}
System.out.println(row[0]);
System.out.println(row[1]);
System.out.println(row[2]);
System.out.println(row[3]);
}
问题是:
- {0,1,0,2} 变为 {1,0,2,0}
- {0,2,0,2} 变为 {2,0,2,0}
- {1,1,3,3} 变为 {2,3,3,0}
- {2,2,2,2} 变为 {4,2,2,0}
它没有完全合并,或者由于某种原因它只移动和合并一次?我想知道我做错了什么,以便我学习,谢谢!
请问,谁能帮我解决这个问题?非常感谢...谢谢!
【问题讨论】:
-
我认为您的问题有两个步骤。首先,您需要对数组进行排序以将所有零推到右侧。这种有冒泡排序的味道。接下来,您需要执行一个合并步骤,您可以选择合并两个条目。