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

LeetCode 4Sum(四数之和)C++代码指定测试用例运行错误原因查询

LeetCode 4Sum问题运行时错误分析

核心运行时错误原因

  • 空数组下标越界访问
    你提供的测试用例中,nums数组的最大元素为9,四数之和的最大可能值为9*4=36,远小于目标值500,因此不存在符合条件的四元组,存储结果的ans数组是空的。你的代码在去重逻辑中没有判断ans是否为空,直接执行ans2.push_back(ans[0]);访问空数组的0下标,触发非法内存访问,直接导致运行时错误。

其他隐藏问题

  • 整数溢出风险
    代码中计算四数之和时直接用int类型存储结果:
int t = nums[i]+nums[j]+nums[start]+nums[end];

当数组元素值较大时,四个int类型数值相加的结果可能超出int的取值范围,导致溢出得到错误的比较值,触发逻辑错误,建议修改为:

long long t = (long long)nums[i] + nums[j] + nums[start] + nums[end];
  • 去重逻辑效率极低
    当前代码先存储所有可能的四元组,再整体排序去重,当存在大量重复元素时会占用极高的内存,甚至可能触发内存不足的问题。可以在遍历i、j、移动双指针的过程中直接跳过和前一位相同的元素,提前过滤重复结果,大幅降低内存占用和运行耗时。

快速修复方案

在去重逻辑前增加空数组判断即可解决本次运行时错误:

sort(begin(ans),end(ans)); 
n = ans.size();
if(n == 0) return {}; // 新增空判断,避免空数组访问
vector<vector<int>> ans2;
ans2.push_back(ans[0]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:24:02