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

C++实现findTwoSumPair函数报signal aborted错误如何解决

错误原因定位

  • 内层循环条件写错:内层for循环的终止条件误写为i < vec.size(),外层循环中i不变的前提下该条件永远成立,导致j无限递增,程序进入死循环,因此仅输出Q3后无后续输出
  • 下标初始值错误:内层循环j的初始值设为i,会出现两个元素取同一个下标的情况,不符合「不同元素」的要求
  • 变量作用域错误:i、j都是循环内部定义的局部变量,循环结束后无法访问,return语句直接访问会触发非法内存访问,导致core dump
  • 返回值逻辑错误:要求返回下标组成的pair,现有代码写的vec[i],vec[j]返回的是元素值,且不存在匹配对时没有返回{-1,-1}的逻辑,语法上还缺失pair构造的右括号、函数结束的右大括号
  • 空输入兼容缺失:没有判断vector为空、长度不足2的边界场景,空输入下直接进入循环会触发未定义行为

正确实现代码

std::pair<int, int> findTwoSumPair(const std::vector<int>& vec, int targetSum) {
    // 兼容空输入、长度不足2的边界场景
    if (vec.size() < 2) {
        return {-1, -1};
    }
    int len = vec.size();
    for (int i = 0; i < len; ++i) {
        // j从i+1开始,保证两个下标不同,返回结果天然为升序
        for (int j = i + 1; j < len; ++j) {
            if (vec[i] + vec[j] == targetSum) {
                return {i, j};
            }
        }
    }
    // 未找到匹配对返回默认值
    return {-1, -1};
}

该实现暴力遍历所有不同下标组合,完全匹配题目要求,测试用例中第一个目标和6会匹配到下标1(元素2)和下标3(元素4)返回{1,3},第二个目标和10无匹配返回{-1,-1},和预期输出一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:57:03