我正在尝试解决 Codility 第 5 课中的 MinAvgTwoSlice 问题,但我似乎找不到我的代码有什么问题。一般思想是,给定一个整数数组,必须找到该数组中具有最小平均值的切片。当尝试解决问题时,他们使用数组 [4, 2, 2, 5, 1, 5, 8] 作为试验,解决它的函数应该返回 1;然而,即使用笔和纸计算,我也得到的不是 1,而是 2。
这是我的工作代码,但是,通过提供的示例,我得到了 2,任何建议或疏忽都会受到赞赏:
#include <vector>
#include <climits>
using namespace std;
int solution(vector<int> &A){
int N=A.size();
int minAverage = INT_MAX;
int sum;
int div;
for(int p=0; p<(N-1); p++){
sum = A[p];
div = 2;
for(int q=(p+1); q<N; q++){
sum += A[q];
minAverage = min(minAverage, sum/div);
div++;
}
}
return minAverage;
}
我被问到切片的位置而不是得到最小平均值。感谢评论,我意识到了这一点。这可以关闭。