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

合并两个升序有序整数列表代码出现索引越界错误如何修复

两个升序整数列表合并问题修复方案

问题根源

  • 循环边界配置错误:合并后列表总长度为list_a.Count + list_b.Count,原有代码设置为总长度减2,会直接遗漏最后2个元素
  • 缺少指针越界校验:当其中一个列表的元素全部添加完成后,后续循环仍会访问该列表超出范围的索引,触发越界报错

修复后实现代码

static List<int> Merge(List<int> list_a, List<int> list_b)
{
    List<int> list_c = new List<int>();
    int countA = 0, countB = 0;
    int totalCount = list_a.Count + list_b.Count;

    for (int i = 0; i < totalCount; i++)
    {
        // list_a未遍历完,且list_b已遍历完/当前a元素更小
        if (countA < list_a.Count && (countB >= list_b.Count || list_a[countA] <= list_b[countB]))
        {
            list_c.Add(list_a[countA]);
            countA++;
        }
        // list_b未遍历完
        else
        {
            list_c.Add(list_b[countB]);
            countB++;
        }
    }
    return list_c;
}

效果验证

使用原测试用例运行修复后代码,输出结果为1,2,3,4,5,6,7,8,9,符合预期,无越界报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:27:04