无限制的更改以获得相同的数组

时间:2016-08-18 01:35:56

标签: 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。 有人可以帮助我开始一种方法。我还在画一个空白。

1 个答案:

答案 0 :(得分:2)

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

这意味着,当且仅当所有元素的总和可以均分int temp时,才能使数组的所有n元素相同。否则,其中一个元素必须采用另一个值来获得n相等的元素。

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