我试图解决编码难题,但还没有找到好的解决方案。问题如下:
例如,如果您从数组[4 2 0]
开始,则最小迭代次数将为3,因为[4 2 0] -> [3 1 1] ->[2 2 2]
。另一方面,如果您有[1 0]
,则答案将为-1(元素不可能达到相同的值)。
如果我正确理解了这个问题,我认为关键来自于注意:
[4, 0], [4, 2, 0], [4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0]
所有人都有相同的答案。仅有的两件事是:
因此,逐步遍历列表,并在每个点检查最小值,最大值,并确保该点的条目具有与所有其他数字相同的奇偶校验。
在python中,可能看起来像:
current_min, current_max = float("inf"), float("-inf")
parity = numbers[0] % 2
for entry in numbers:
if entry % 2 != parity:
return -1
current_min, current_max = min(entry, current_min), max(entry, current_max)
return (current_max - current_min) / 2