给定一个长度为 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操作
解法:
class Solution { func minMoves(_ nums: [Int]) -> Int { //先找出数组最小值 var min = nums.min()! //定义返回值 var result = 0 //本质上等同于数组其它元素对最小元素的差值的和 for num in nums { result += (num - min) } return result } }
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/huangzs/p/15029561.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。