2013-10-29 41 views
1

如果第一个数组包含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; 
} 

回答

3

有常,你可以用一个单独的鼠标使用一招.....

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; 
}  
相关问题