You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并两个同长度int数组并按奇偶索引排列?

解决数组奇偶索引合并的问题

嘿,我来帮你搞定这个数组合并的需求!你之前写的代码是把数组a全放在前面、数组b接在后面,这当然达不到奇偶索引交替的效果啦,咱们调整一下循环的索引逻辑就行。

核心思路

因为a和b长度相同,新数组c的总长度是a.length * 2(这个你原来的写法其实也对,但用a.length*2更直观)。关键是给a的元素找对偶数索引位置,给b的元素找对奇数索引位置:

  • 对于a数组的第i个元素,放到c的2*i位置(0、2、4...这些偶数索引)
  • 对于b数组的第i个元素,放到c的2*i + 1位置(1、3、5...这些奇数索引)

修正后的代码示例

int[] a = {0, 1, 2, 3};
int[] b = {4, 5, 6, 7};
int[] c = new int[a.length * 2]; // 总长度是两个数组长度之和,因为a、b等长,所以等价于a.length*2

for (int i = 0; i < a.length; i++) {
    c[2 * i] = a[i];          // 偶数索引存放a的元素
    c[2 * i + 1] = b[i];      // 奇数索引存放b的元素
}

// 执行后c的值就是:[0,4,1,5,2,6,3,7],完全符合你的期望

为什么这个逻辑可行?

咱们拿例子里的i值拆解一下:

  • 当i=0时,a[0]放到c[0](偶数),b[0]放到c[1](奇数)
  • 当i=1时,a[1]放到c[2](偶数),b[1]放到c[3](奇数)
  • 以此类推,直到循环结束,正好把两个数组的元素交替填充到c里,完美匹配你的需求。

如果之后遇到a和b长度不同的情况,你可以先取两个数组的最小长度处理前面的交替部分,剩下的元素再追加到c的末尾,但题目里明确说两个数组长度相同,所以上面的代码完全够用啦。

内容的提问来源于stack exchange,提问作者iJusPan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:53:12