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

合并两个数组,例如,两个数组的元素相互交替定位

合并两个数组,例如,两个数组的元素相互交替定位

炎炎设计 2022-06-15 09:42:54
我有两个数组,我喜欢以某种方式合并,所以我的输出应该是这样的我们也可以选择多维数组吗?public class MeregTwoArray {public static int[] mergeArray(int[] a, int[] b) {    int length = (a.length + b.length);    int result[] = new int[length];    for (int i = 0; i <= a.length-1;) {        result[i] = a[i];        for (int j = 0; j <= b.length-1;) {            result[i + 1] = b[j];            j++;            break;        }        i++;    }    return result;}public static void main(String[] args) {    int a[] = {1, 3, 5, 6, 7, 8};    int b[] = {4, 2, 7, 6, 4, 2};    int result[] = mergeArray(a, b);    for (int i = 0; i <= result.length - 1; i++) {        System.out.println(result[i]);    }}}电流输出:1 3 5 6 7 8 4 0 0 0 0 0预期输出:1 4 3 2 5 7 6 6 7 4 8 2
查看完整描述

2 回答

?
慕虎7371278

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

这有帮助吗?


public static int[] mergeArray(int[] a, int[] b) {

   int result[] = new int[a.length + b.length];

   int targetIdx = 0;  // result arrray index counter

   int i, j; 



   for(i = 0, j = 0; i <= a.length-1; ) {

      result[targetIdx] = a[i++]; // put element from first array 

      if(j < b.length) { // if second array element is there

         result[++targetIdx] = b[j++]; // put element from second array

      }

     targetIdx++;

  }


  // If b.length > a.length

  while(j < b.length) {

      result[taargetIdx++] = b[j++];

  }

  return result;

}


查看完整回答
反对 回复 2022-06-15
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您可以维护 2 个索引,一个用于“合并”数组,一个用于循环迭代的索引。因为您正在合并,所以您需要在每次迭代中将目标索引增加 2:


public static int[] mergeArray(int[] a, int[] b) {

    int length = (a.length + b.length);

    int result[] = new int[length];


    for (int i = 0, e = 0; i <= a.length - 1; i++, e += 2) {

        result[e] = a[i];

        result[e + 1] = b[i];

    }


    return result;

}

输出预期的1 4 3 2 5 7 6 6 7 4 8 2


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 87 浏览

添加回答

举报

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