首先要澄清一下,这不是作业,我在最近的一次面试中被问到这个问题,结果一片空白。 所以我有以下数组,
{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/