题目:
给你一个长度为 n
的整数数组,每次操作将会使 n - 1
个元素增加 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,所以我们只需要找到最小的元素,并且遍历一遍数组看每个数组元素需要操作多少次才能到最小值即可。
代码如下:
int minMoves(int* nums, int numsSize){
int min = nums[0], ret = 0;
for(int i = 1 ; i < numsSize; i++){
if(nums[i] < min){
min = nums[i];
}
}
for(int i = 0 ; i<numsSize; i++){
ret = ret + nums[i] - min;
}
return ret;
}
这是我个人的刷题记录,欢迎大家给我的博客提建议,以及如果您有好的leetcode刷题流程,希望能给我指点。
个人的github主页:gushouchuanzhi1 (Deyu Tan) · GitHub
个人的刷题记录仓库:https://github.com/gushouchuanzhi1/2023_personal_training