453.最小操作时间使数组对象相等(javascript)453.MinimumMovestoEqualArrayElements

原创
小哥 3年前 (2022-11-10) 阅读数 45 #大杂烩

给你一个长度 n 整数数组,每个操作将生成。 n - 1 元素增加 1 。返回使数组的所有元素相等的最小操作数。

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.

示例 1:

输入:nums = [1,2,3]
输出:3
解释:
只需要3第二次操作(请注意,每次操作都会增加两个元素的值):
[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

示例 2:

输入:nums = [1,1,1]
输出:0

解决问题的思路:
因为我们只需要找到使数组中所有元素相等的最小操作数,所以我们不需要考虑数组中每个元素的绝对大小,也就是说,当数组中的所有元素相等时,我们不需要真正计算元素的值,我们只需考虑数组中元素的相对大小的变化。

因此,每个操作都可以理解为 n-1 元素增加 1 ,也可以理解为 1 元素减少 1 显然,后者更有利于我们的计算。

var minMoves = function (nums) {
    let min = Math.min(...nums)
    let sum = 0
    for (let i of nums) {
        sum += i- min
    }
    return sum
};

//与上面的代码相比,这相对更好。
var minMoves = function (nums) {
    let min = Math.min(...nums)
    let len = nums.length
    let sum = 0
    let i=0
    while(i

循环遍历引用: vue 循环对象、数组和字符串。

leetcode: https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements/

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除