【leetcode 简单】 第一百零三题 最小移动次数使数组元素相等

给定一个长度为 n非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。

示例:

输入:
[1,2,3]

输出:
3

解释:
只需要3次移动(注意每次移动会增加两个元素的值):

[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]
class Solution:
    def minMoves(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        return sum(nums)-min(nums)*len(nums)

原文地址:https://www.cnblogs.com/flashBoxer/p/9557477.html

时间: 2024-07-30 12:58:15

【leetcode 简单】 第一百零三题 最小移动次数使数组元素相等的相关文章

453. 最小移动次数使数组元素相等(数学)

题意:一次操作,n元数组中任意n-1个数+1.求取最小操作次数使得数组所有元素相等. 分析: 1.正面思考,每次将数组中除最大值以外的所有值+1,直到所有元素都相等. 2.反面思考,每次将数组中的最大值-1,直到所有元素相等(最少操作次数=数组和-n*数组最小值) n元数组,其中n-1元+1,因为只要求元素相等,可以不考虑值,可以整体再-1,两次操作后也就是一元-1. 反面思考数学证明: 假设所有元素都相等时数字为k, 如果最小数字经过x次移动能够等于k, 则此时所有元素也能等于k, 此时移动次

LeetCode#453 最小移动次数使数组元素相等

给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3] 输出: 3 解释: 只需要3次移动(注意每次移动会增加两个元素的值): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4] 自我思考:观察规律,移动次数是数组内最大值减去最小值,然后生成新数组后继续用最大值减最小值,直到这个差为0,每次的差的和就是移动次数代码实现如下 1 import java.io.IOE

453. 最小移动次数使数组元素相等

给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3] 输出: 3 解释: 只需要3次移动(注意每次移动会增加两个元素的值): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4] 思路: 设加x次,加到最后,每个数都为y sum:数组元素的和 min:数组中最小的元素 n:数组中元素的个数 则有: sum+(n-1)*x = n*y(式1) y = min+x(式

(Java) LeetCode 453. Minimum Moves to Equal Array Elements —— 最小移动次数使数组元素相等

Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1. Example: Input: [1,2,3] Output: 3 Explanation: Only three moves are needed (remem

[LeetCode] Minimum Moves to Equal Array Elements 最少移动次数使数组元素相等

Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1. Example: Input: [1,2,3] Output: 3 Explanation: Only three moves are needed (remem

Leetcode 462.最少移动次数使数组元素相等

最少移动次数使数组元素相等 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最多为10000. 例如: 输入: [1,2,3] 输出: 2 说明: 只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1): [1,2,3] => [2,2,3] => [2,2,2] 排序之后,从两边往中间走,最大和最小之间的差距,是一定要填补上的,不管+1 还是 -1,所以最后都等于中位数. 1 import java.uti

【leetcode 简单】 第一百零一题 回旋镖的数量

给定平面上 n 对不同的点,"回旋镖" 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序). 找到所有回旋镖的数量.你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中. 示例: 输入: [[0,0],[1,0],[2,0]] 输出: 2 解释: 两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]] class Solution: def

一起talk C栗子吧(第一百零三回:C语言实例--进程间通信大阅兵)

各位看官们,大家好,上一回中咱们说的是使用信号量进行进程间同步与互斥的例子,这一回咱们说的例 子是:进程间通信大阅兵.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在前面的章回中介绍了多种进程间通信的方式,大家可能觉得有点杂乱的感觉,或者有各种疑问:为什么会有这么多进程间通信方式呢?这么多通信方式中哪个最好呢?其实这么多的进程间通信方式除了历史的原因外,也与技术的发展有关系.这些通信方式中不能说哪个最好,只能说哪个最适用.具体使用哪种通信方式取决于我们的编程环境. 在本章回中,

“全栈2019”Java第一百零二章:哪些作用域可以声明局部内部类?

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第一百零二章:哪些作用域可以声明局部内部类? 下一章 "全栈2019"Java第一百零三章:匿名内部类详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学