leetcode 453

阅读: 评论:0

leetcode 453

leetcode 453

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

难度 简单
题目描述:给你一个长度为 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 == nums.length
1 <= nums.length <= 105
-109 <= nums[i] <= 109
答案保证符合 32-bit 整数

来源:力扣(LeetCode)
链接:
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

这道题是个简单题,但我不会做,看到大佬的分析,设几个未知数算一下就出来了,感觉自己差距还是太大了,所以记录下来涨个记性!!!

附上大佬的分析:

思路:
数学题
假设目前数组总和为sum,我们需要移动次数为m,那么整体数组总和将会增加m * (n - 1),这里的n为数组长度,最后数组所有元素都相等为x,于是有:
sum + m * (n - 1) = x * n (1)
我们再设数组最小的元素为min_valm = x - min_val​,即 ​x = m + min_val​带入(1)得:
m = sum - min_val * n​

class Solution {
public:int minMoves(vector<int>& nums) {int min_val = INT_MAX;int sum = 0;for (auto x:nums) {sum += x;if (x < min_val) {min_val = x;}}return sum - min_val*nums.size();}
};

本文发布于:2024-01-31 12:40:22,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170667602428583.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:leetcode
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23