java - 如何编写一个方法来穿插两个不同长度的数组?

标签 java arrays

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

相关文章:

java - 无法在 Java 中使用 Jaxb 仅提取选定的标记值

java - 如何使用 Rest Assured 在 Response API 中获取两个具有相同名称的不同字段?

JavaScript 将 RGB 整数转换为十六进制

java - activator 1.3.0 导致 sbt 项目出错?

java - 为什么对字节进行右移 (>>) 位运算会产生奇怪的结果?

java - 输入/输出 Java 示例

arrays - 是否可以在不使用“Array.map box”的情况下将“T []参数传递给需要obj []的函数?

javascript - 当引用在数组中时,如何从分层对象中获取值?

python - 如何将标量添加到特定范围内的 numpy 数组?

javascript - javascript中查找数组中重复元素的方法有哪些