453 Minimum Moves to Equal Array Elements
Posted philipyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了453 Minimum Moves to Equal Array Elements相关的知识,希望对你有一定的参考价值。
https://leetcode.com/problems/minimum-moves-to-equal-array-elements/?tab=Description
<Math>
给你一个array,每次操作可以使一个数不变,同时array中其余的数各+1。最少需要操作多少次可以让array里的值全都相等。
两种想法,殊途同归
想法一:想让所有的元素都相等,那肯定要考虑怎么样才能让最小的和最大的相等,于是最大的原地不动,其他的元素+1,一直做max-min次后,最大的和最小的相等。这时,最小的依然是最小的,最大的也变成最小的,以前第二大的变成现在最大的了。所以答案其实就是把最小项到各个数字的gap加起来。相同的项毫无影响,他兄弟怎么做,他就怎么做即可。比如说答案123那个,改成1123,也一样,1怎么做,其他1也怎么做就是了
想法二:其实我们并不在乎array里的数是多少,只在乎数与数之间的相对距离。于是我们想到,一个数不变,其他数都加1. 等价于这个数 -1 ,其他数都不变。每次可以使一个数-1, 需要减一多少次,才能让array相等呢?自然是每个数都跟min比一下即可。 求个和,然后减去n * min即可
以上是关于453 Minimum Moves to Equal Array Elements的主要内容,如果未能解决你的问题,请参考以下文章