leetcode 453题

Posted by franki on October 22, 2022

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

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

示例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 == nums.length
  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • 答案保证符合 32-bit 整数

思路

每次移动过程中,都有 n-1 个元素 +1,那么没有 +1 的那个元素和其他 n-1 个元素相对差异就缩小了。所以这道题让所有元素都变为相等的最少步数

代码

/**
 * @param {string} s
 * @return {string}
 */
function minMoves(nums) {
    let sum = 0;
    let min = Number.MAX_SAFE_INTEGER;
    let l = nums.length;

    for (const v of nums) {
        sum += v;
        if (min > v) {
            min = v;
        }
    }

    return sum - min * l;
}

复杂度分析:

  • 时间复杂度: O(N)
  • 空间复杂度:O(1)