我有一个数组[4,7,1,3,6,5]
,我需要对其进行转换,以使该转换数组中的最大元素必须最小。
因此,对于上面的示例,在不更改该数组的总和值的情况下,可以将数组转换为[4,4,4,4,5,5]
,因此答案将为5(最大元素最小)。
我们可以在不改变总和的情况下,通过任何值递增或递减数组的元素。
为清楚起见另一个例子:
给定数组[4,1,0]
,以便我们可以将其修改为[2,1,2]
,以便最小元素为2。
答案 0 :(得分:3)
算法:
1:汇总所有数字(26)
2:将总和除以元素总数(26/6),然后将数字四舍五入到最接近的整数(4)
3:开始将这个整数添加到一个新数组,直到只用fours填充数组的其余部分,然后开始添加五个(下一个整数)
// Don'f forget #include <cmath> or <math.h>
int arr[], int N;
int answer[N];
int sum = 0;
for(int i = 0; i < N; i++) sum += arr[i];
int num = floor(sum / (double)N);
for(int i = 0; i < N; i++)
{
if (sum == (N - i) * (num + 1)) answer[i] = num + 1;
else answer[i] = num;
sum -= answer[i];
}