arrays - 无限更改以获得相等的数组

标签 arrays algorithm

首先要澄清一下,这不是作业,我在最近的一次面试中被问到这个问题,结果一片空白。 所以我有以下数组,

{1, 6, 3, 2, 9}

变化是将任何元素递增 1 并将任何其他元素递减 1 的步骤。因此 1 变化可能是这样的,

{2, 5, 3, 2, 9}

我可以进行无限制的此类更改,直到我获得最大数量的相等元素,因此给定的数组可以变为

{3, 3, 3, 3, 7} or {3, 4, 4, 4, 4}

超过这一点,更多的变化将不会让更多的元素相等。因此,问题是,进行无限的更改,可以使元素的最大数量是多少。 因此,上述数组的答案是 4。 (注意有两种情况,无论哪种情况,答案都是 4) 另一个例子是数组,

{1, 4, 1}

在这种情况下,我们可以进行更改以达到

{2, 2, 2}

因此本例中的答案是3。 有人可以帮助我开始的方法。我还在画空白。

最佳答案

这似乎是一个数学问题,而不是与计算机相关的问题。由于每次“更改”都会增加一个元素并减少另一个元素,因此数组中所有值的总和是常数。

这意味着当且仅当所有元素的总和可以被n 整除时,您才能得到数组的所有n 元素。否则其中一个元素必须采用另一个值才能获得 n-1 个相等的元素。

顺便说一下,你的答案 {3, 3, 3, 3, 7}{3, 4, 4, 4, 4}(19 的总和) 不是您之前状态 {1, 6, 3, 2, 9}(21 的总和)的解决方案。

关于arrays - 无限更改以获得相等的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39008665/

相关文章:

java - 迭代对象数组并将其成员与其他数组进行匹配/比较

java - 数组的唯一计算值

c - 数组等于另一个数组

algorithm - 在图中找到最近的边

Java数组,打印其他内容

javascript - 临时变量未存储在 Javascript 中

string - "loop rolling algorithm"的解释

JavaScript - 改进在没有 Math.sqrt 的情况下查找完美平方根的算法

algorithm - 找出两个数组中共有的最大元素?

algorithm - 寻找可能是 Dijkstra 的算法