LeetCode答题记录453. 最小移动次数使数组元素相等

2018-08-08  本文已影响0人  渣新iOS程序员sun某

给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。
输入:
[1,2,3]
输出:
3
解释:
只需要3次移动(注意每次移动会增加两个元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]

解法:n-1个元素+1,相当于1个元素-1。找出最小的数,所有数减去最小数的和即为答案。
本题也可以只用一次循环得到结果,有心人可以尝试

func minMoves(_ nums: [Int]) -> Int {
    var minNum: Int = nums.first!
    for value in nums {
        if value < minNum {
            minNum = value
        }
    }
    var moveCount = 0
    for value in nums {
        moveCount += value - minNum
    }
    return moveCount
}
上一篇下一篇

猜你喜欢

热点阅读