Minimum Moves to Equal Array Elements(最少移动步长使数组中元素相等)
2017-04-22 10:07
459 查看
今天在leetcode上遇到一个问题,就是如何在最小移动步数下使数组中元素相等,每次仅能移动n-1个元素,而且每次只能加1?
其实这就是一个简单的数学问题,我们可以假设在m次移动后,所有元素达到相等,且相等值为val,那么,我们可以建立等式如下:
sum + m*(n-1) = val*n;(其中,sum是原始数组元素之和,n为元素个数),实际上,我们还有一个等式,那就是m步后val的值:
val = minNum + m;(其中,minNum是原始数组中最小值),因为原始数组中最小值是一直参与移动(增值)的,那么在m次移动后,val就是minNum+m,
所以,m = sum - minNum*n
就是这么简单!!!
其实这就是一个简单的数学问题,我们可以假设在m次移动后,所有元素达到相等,且相等值为val,那么,我们可以建立等式如下:
sum + m*(n-1) = val*n;(其中,sum是原始数组元素之和,n为元素个数),实际上,我们还有一个等式,那就是m步后val的值:
val = minNum + m;(其中,minNum是原始数组中最小值),因为原始数组中最小值是一直参与移动(增值)的,那么在m次移动后,val就是minNum+m,
所以,m = sum - minNum*n
就是这么简单!!!
相关文章推荐
- [LeetCode] Minimum Moves to Equal Array Elements 最少移动次数使数组元素相等
- [LeetCode] Minimum Moves to Equal Array Elements II 最少移动次数使数组元素相等之二
- [LeetCode]453. Minimum Moves to Equal Array Elements(最少移动直到数组元素相等)
- (Java) LeetCode 462. Minimum Moves to Equal Array Elements II —— 最少移动次数使数组元素相等 II
- Leetcode 462. Minimum Moves to Equal Array Elements II 使数组相等 解题报告
- Minimum Moves to Equal Array Elements II最小移动步数问题解法详解
- (Java) LeetCode 453. Minimum Moves to Equal Array Elements —— 最小移动次数使数组元素相等
- Leetcode 453. Minimum Moves to Equal Array Elements 使数组相等 解题报告
- minimum-moves-to-equal-array-elements
- leetcode 453 Minimum Moves to Equal Array Elements C++
- 453.[Leetcode]Minimum Moves to Equal Array Elements
- Minimum Moves to Equal Array Elements I&&II
- LeetCode No.453 Minimum Moves to Equal Array Elements
- leetcode 462 Minimum Moves to Equal Array Elements II C++
- Leetcode 462 Minimum Moves to Equal Array Elements II
- [leetcode 453]Minimum Moves to Equal Array Elements
- leetcode Minimum Moves to Equal Array Elements
- [LeetCode]Minimum Moves to Equal Array Elements II(Java)
- Leetcode 453 Minimum Moves to Equal Array Elements
- [LeetCode]Minimum Moves to Equal Array Elements(Java)