如果第一个数组包含 1, 2, 3, 4, 5, 6,第二个数组包含 6, 7, 8,则结果数组应包含 1, 6, 2, 7, 3, 8, 4, 5, 6. 到目前为止,我所拥有的似乎又长又复杂,而且只有当两个数组长度相等时才有效。
这是我现在拥有的
public static int[] intersperseC(int[] array1, int[] array2)
{
int[] resultArray = new int[array1.length + array2.length];
if (array1.length>array2.length)
{
for (int i=0; i<array2.length; i++)
{
if (i%2 == 0)
resultArray[i] = array1[i/2];
else
resultArray[i] = array2[i/2];
}
for (int i=array2.length; i<resultArray.length; i++)
{
resultArray[i] = array1[i - array2.length];
}
}
if (array2.length>array1.length)
{
for (int i = 0; i<array1.length; i++)
{
if (i%2 == 0)
resultArray[i] = array1[i/2];
else
resultArray[i] = array2[i/2];
}
for (int i=array1.length; i<resultArray.length; i++)
{
resultArray[i] = array2[i - array1.length];
}
}
if (array1.length == array2.length)
{
for (int i = 0; i<resultArray.length; i++)
{
if (i%2 == 0)
resultArray[i] = array1[i/2];
else
resultArray[i] = array2[i/2];
}
}
else
{
System.out.println("I should not be here.");
}
return resultArray;
}
最佳答案
通常有一个技巧可以用于单独的游标......
public static int[] intersperseC(int[] array1, int[] array2) {
int[] resultArray = new int[array1.length + array2.length];
int cursor = 0;
for (int i = 0; i < Math.max(array1.length, array2.length); i++) {
if (i < array1.length) {
resultArray[cursor++] = array1[i];
}
if (i < array2.length) {
resultArray[cursor++] = array2[i];
}
}
return resultArray;
}
关于java - 如何编写一个方法来穿插两个不同长度的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670170/