LeetCode刷题(127)~最小移动次数使数组元素相等动态规划|数学
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题(127)~最小移动次数使数组元素相等动态规划|数学相关的知识,希望对你有一定的参考价值。
题目描述
给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动将会使 n - 1 个元素增加 1。
示例:
输入:
[1,2,3]
输出:
3
解释:
只需要3次移动(注意每次移动会增加两个元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
解答
Demo【n-1个元素都+1相对于 一个元素-1】
int minMoves(vector<int>& nums)
sort(nums.begin(),nums.end());
int count=0;
for(int i=nums.size()-1;i>0;--i)
count+=nums[i]-nums[0];
return count;
运行结果
Demo
int minMoves(vector<int>& nums)
int ans=0;
int a=INT_MAX;
for(int num:nums)
a=min(num,a);
for(int num:nums)
ans+=num-a;
return ans;
运行结果
Demo(动态规划)
int minMoves(vector<int>& nums)
sort(nums.begin(),nums.end());
int moves=0;//总的移动数量
for(int i=1;i<nums.size();++i)
int diff=moves+nums[i]-nums[i-1];//每次的移动数
nums[i]+=moves;
moves+=diff;
return moves;
运行结果
题目来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements
以上是关于LeetCode刷题(127)~最小移动次数使数组元素相等动态规划|数学的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—453. 最小操作次数使数组元素相等—day72
leetcode刷题39.最小操作次数使数组元素相等——Java版