我對這個最小-最大問題有疑問:
。我的代碼:
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<<" "/span>;
int max=0;
for(int i=1; i<5; i )
max = arr[i];
cout<<max<<endl;
}
這些代碼在樣本資料1和2中運行成功,但當我提交我的代碼時,這些測驗案例也顯示為錯誤的輸出。
你能不能提示一下這段代碼在哪里出錯了!
這段代碼是什么?
uj5u.com熱心網友回復:
根據給出的問題,將int改為long long。
uj5u.com熱心網友回復:
int是一個32位的整數,問題中提到答案有可能會大于這個數字。你要為你的向量和最大變數使用一個64位的整數(int64_t)。
你也應該改成通過參考而不是通過值來傳遞
void miniMaxSum(vector<int> arr) {將復制整個陣列,而void miniMaxSum(const vector<int>& arr) {將傳入陣列的只讀參考而不復制它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/331859.html
標籤:
下一篇:消除影像和行邊框之間的間隙
