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

原题链接:Leetcode 453. 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.

Example 1:

bash 复制代码
Input: nums = [1,2,3]
Output: 3

Explanation: Only three moves are needed (remember each move increments two elements):

1,2,3\] =\> \[2,3,3\] =\> \[3,4,3\] =\> \[4,4,4

Example 2:

bash 复制代码
Input: nums = [1,1,1]
Output: 0

Constraints:

  • n == nums.length
  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • The answer is guaranteed to fit in a 32-bit integer.

题目大意:

给了一个长度为n的数组 nums ,每次操作能使其中的n-1个元素加1,问做多需要多少次数能够使得所有元素相等

方法一:模拟

思路:

转换思路:每次使得n-1个元素加1,等效为使得一个元素减1

那么只要找到值最小的元素,合计一下其他元素减到最小值的步骤总和即可。

需要的操作次数和题目要求在值上是相等的。

C++ 代码:

cpp 复制代码
class Solution {
public:
    int minMoves(vector<int>& nums) {
        // 找到数组中最小值
        int min_ = *min_element(nums.begin(), nums.end());
        int ans = 0;

        for(auto num : nums){
            ans += num - min_;
        }

        return ans;
    }
};

复杂度分析:

  • 时间复杂度:O(n),先找出最小值,然后遍历一遍合计次数
  • 空间复杂度:O(1)

补充:C++求vector容器中的最大值(最小值)及其位置

cpp 复制代码
#include <vector>
#include <algorithm>

vector<int> a = {2, 4, 6, 7, 1, 0, 8, 9, 5, 3};

// 最大值最小值的位置
auto max_pos = max_element(a.begin(), a.end());
auto min_pos = min_element(a.begin(), a.end());

// 最大值和最小值
int max_val = *max_element(a.begin(), a.end());
int min_val = *min_element(a.begin(), a.end());

也可以用于求普通数组:

cpp 复制代码
int a[] = {1, 2, 3, 4, 5, 6};
int max_val = *max_element(a, a+6);
int min_val = *min_element(a, a+6);
相关推荐
程序员东岸7 小时前
《数据结构——排序(中)》选择与交换的艺术:从直接选择到堆排序的性能跃迁
数据结构·笔记·算法·leetcode·排序算法
做怪小疯子10 小时前
LeetCode 热题 100——二叉树——二叉树的层序遍历&将有序数组转换为二叉搜索树
算法·leetcode·职场和发展
CoderYanger10 小时前
递归、搜索与回溯-记忆化搜索:38.最长递增子序列
java·算法·leetcode·1024程序员节
CoderYanger11 小时前
C.滑动窗口-越短越合法/求最长/最大——2958. 最多 K 个重复元素的最长子数组
java·数据结构·算法·leetcode·哈希算法·1024程序员节
却话巴山夜雨时i12 小时前
394. 字符串解码【中等】
java·数据结构·算法·leetcode
leoufung12 小时前
LeetCode 230:二叉搜索树中第 K 小的元素 —— 从 Inorder 遍历到 Order Statistic Tree
算法·leetcode·职场和发展
惊鸿.Jh12 小时前
503. 下一个更大元素 II
数据结构·算法·leetcode
小白程序员成长日记13 小时前
2025.12.01 力扣每日一题
算法·leetcode·职场和发展
.柒宇.15 小时前
力扣hot100---42.接雨水(java版)
java·算法·leetcode