为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

GCT1015 2021-07-12 16:04:06
我被告知要做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 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

是的,你可以在一个循环中完成,


        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++;


            }

        }

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


查看完整回答
反对 回复 2021-07-23
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

不同长度的数组

    int[] result = new int[ar1.length + ar2.length];

    for(int i = 0; i < result.length; i++) {

        result[i] = i < ar1.length ? ar1[i] : ar2[i - ar1.length]; // comparison

    }

等长数组

    int[] result = new int[ar1.length + ar2.length];

    for(int i = 0; i < ar1.length; i++) {

        result[i] = ar1[i];              // no

        result[ar1.length + i] = ar2[i]; // comparison      

    }

在此处查看(并执行)完整实现。


查看完整回答
反对 回复 2021-07-23
  • 2 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信