Given an array of n elements (a1,a2,..ai,...,an). You are allow to chose any index i and j, such that (i!=j) and allow to perform
increment operation on ai = ai+1 and decrements operation on aj = aj - 1 infinite number of times. How many maximum number of elements you can find that have same number.
example 1:
1 4 1
ans: 3
example 2:
2 1
example 1:
1 4 1
ans: 3
example 2:
2 1
ans : 1
---------------------------
Increment and decrement could be performed more than once...
uint max_equal(int *a, uint n) {
int s = 0;
for (uint i = 0; i < n; i++) {
s = (s + a[i])%n; // avoid overflow issues at slight cost of performance.
// assumes % returns 0 to n-1.
}
return s==0 ? n : n-1;
}

探讨如何通过无限次增减操作使数组中尽可能多的元素相等,给出算法实现并提供示例。

被折叠的 条评论
为什么被折叠?



