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

HackerRank mini-max-sum问题代码过样例但提交报错求解

问题原因

两份代码的共同问题是整数溢出。
根据题目规则,数组单个元素取值范围为1 ≤ arr[i] ≤ 10^9,5个元素的总和最大可达5 * 10^9,而C++中32位有符号整数int的最大值仅为2^31 - 1 ≈ 2.1 * 10^9,总和超过存储上限后会发生截断,最终输出错误的结果。数值较小的样例不会触发溢出所以可以正常通过,一旦测试用例的元素数值较大就会报错。

修正方案

将存储求和结果的变量类型从int替换为64位整数类型long long即可,修正后的代码示例如下:
第一种写法修正版:

void miniMaxSum(vector<int> arr) {
    sort(arr.begin(), arr.end()); 
    long long sum=0;
    for(int i=0; i<5; i++)
        sum += arr[i];
    cout << sum - arr[4] << " " << sum - arr[0] << endl;   
}

第二种写法修正版:

void miniMaxSum(vector<int> arr) {
    sort(arr.begin(), arr.end()); 

    long long min=0;
    for(int i=0; i<4; i++)
        min += arr[i];
    cout << min << " ";

    long long max=0;
    for(int i=1; i<5; i++)
        max += arr[i];
    cout << max << endl;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:57:02