相同的测试用例显示不同的答案

Same test cases showing different answer

我对this min-max problem有疑问:

我的代码:

void miniMaxSum(vector<int> arr) {
    
sort(arr.begin(), arr.end()); 
int 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()); 

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

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

这些代码 运行 成功用于示例数据 1 和 2,但是当我提交我的代码时,这些测试用例也显示为错误输出。

Can you please hint where this code wrong !

根据给定的问题将int更改为long long

int是一个32位整数,题中提到答案有可能大于这个。您需要为向量和最大变量使用 64 位整数 (int64_t)。

您还应该改用按引用传递而不是按值传递 void miniMaxSum(vector<int> arr) { 将复制整个数组,谁 void miniMaxSum(const vector<int>& arr) { 将在不复制的情况下传递对数组的只读引用。