LeetCode 453. 最小操作次数使数组元素相等
2022-5-25
| 2024-4-16
0  |  阅读时长 0 分钟
Created time
May 25, 2022 02:35 PM
date
status
category
Origin
summary
tags
type
URL
icon
password
slug

最小操作次数使数组元素相等

给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。答案保证符合 32-bit 整数。相关标签:数组, 数学。

Minimum Moves to Equal Array Elements

Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal. In one move, you can increment n - 1 elements of the array by 1. The answer is guaranteed to fit in a 32-bit integer. Related Topics: Array, Math.
这题是给我们一个非空数组,然后我们每一次可以进行的操作是任选n-1个元素,然后把这n-1个元素全部加一。然后问我们最少进行多少次操作,可以将数组里面所有的数变成相同的数。
那么我们可以发现你任选n-1个元素加一其实可以看成等价于任选一个元素减一,因为我们最后是要把所有元素变成相同的值。我们其实关心的是它的相对的一个值,而不是它的一个绝对值,所以我们任选n-1个元素全部加一等价于选择剩下的那个元素让它减一。
那么这个问题就变成了就是说每次我们选择一个元素,然后让这个元素减一,然后将所有元素变成相同值的话,最少需要进行多少次操作。
那么这样的话这个题就很简单了,我们先找一下所有数里面的最小值,由于这里面只有减法操作,所有数只能往下减。所以我们找到这个最小值之后,我们其它所有数至少要减到最小数这个水平。因为最小值是没法增加到,所以我们所有数至少减到最小数这个水平。那么由于我们要求的是最小操作次数,那么我们将其它所有值都减到最小数的水平就可以了,那么最后的操作方案数就是每个数和最小值的差的和。求最小值和求和的时间复杂度都是 ,这个做法是的。
也可以直接使用C++ STL中的 accumulate 和 min_element。
 
LeetCode 462. 最少移动次数使数组元素相等 IILeetCode 2. 两数相加
Loading...