更改数组,使数组中的最大元素必须是最小元素
To change an array such that maximum element in an array must be minimum
我有一个数组[4,7,1,3,6,5]
,我需要对它进行变换,使变换后的数组中的最大元素必须是最小元素。
对于上面的例子,在不改变数组的总和值的情况下,数组可以转换为[4,4,4,4,5,5]
,因此答案将是5(最大元素是最小元素)。
可以在不改变数组的总和的情况下,对数组的一个元素增加或减少任何值。
为清楚起见,另一个例子:
给定数组[4,1,0]
,我们可以将其修改为[2,1,2]
,使最大元素的最小值为2。
算法:
1: Sum all numbers (26)
2:将总和除以元素总数(26/6),然后四舍五入到最接近的最小整数(4)
3:开始将这个整数添加到一个新的数组中,直到数组的其余部分无法仅用4填充为止,然后开始添加5(下一个整数)
// 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];
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 如何将元素添加到数组的线程安全函数?
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 输出没有重复元素的动态数组(收缩数组)C++
- 数组中最大的非重复元素
- 数组元素打印的递归方法
- 对字符数组中的元素执行逐位操作
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 通过交换元素使数组相同
- 按平均值替换数组中的元素
- 打印矢量数组中的所有元素
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 如何将元素从向量转移到新数组?
- 如何在向量数组中插入元素?
- 为什么 2 个相同数组的元素彼此相等
- C++ 中的二维整数数组,每行中的元素数量不均匀