相同的测试用例显示不同的答案
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) {
将在不复制的情况下传递对数组的只读引用。
我对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) {
将在不复制的情况下传递对数组的只读引用。