如何在1个循环中合并2个数组?

时间:2018-08-15 17:17:13

标签: java arrays

有人告诉我做

void mergeArrays(int[] ar1 , int[] ar2)

对于这样的输入:

int[] ar1 = {1,2,3,4}
int[] ar2 = {5,6,7,8}

这是我的代码:

 public static void mergeArray(int[] ar1 , int[] ar2)    {
        int[] res = new int[ar1.length+ar2.length];
        int counter = 0;
        for(int a = 0; a<ar1.length; a++)
        {
            res[a] = ar1[a];
            counter++;
        }
        for(int b = 0; b<ar2.length; b++)
        {
            res[counter++] = ar2[b];
        }
        for(int temp = 0; temp<res.length;temp++)
        {
            System.out.print(res[temp]+" ");
        }

输出12345678

这是使用2个循环完成的。现在,我如何使用一个循环来做到这一点?

2 个答案:

答案 0 :(得分:4)

是的,您可以一次循环完成

        int len = arr1.length + arr2.length;
        int[] res = new int[len];

        for(int i=0, j=0; i<len; i++) {
            if(i<arr1.length){
                res[i] = arr1[i];
            }else{
                res[i] = arr2[j];
                j++;

            }
        }

当两个数组的长度不同时,这也将起作用。

答案 1 :(得分:1)

不同长度的数组

s = c(2, 2, 2, 4, 4, 3, 5, 1)

等长数组

s = c(1, 1, 1, 2, 2, 3, 4, 5)

查看(并执行)完整的实现here