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;

运行结果

LeetCode刷题(127)~最小移动次数使数组元素相等【动态规划|数学】_数组


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;

运行结果

LeetCode刷题(127)~最小移动次数使数组元素相等【动态规划|数学】_leetcode_02


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刷题(127)~最小移动次数使数组元素相等【动态规划|数学】_数组_03

题目来源

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements


以上是关于LeetCode刷题(127)~最小移动次数使数组元素相等动态规划|数学的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—453. 最小操作次数使数组元素相等—day72

leetcode刷题39.最小操作次数使数组元素相等——Java版

Leetcode 453.最小移动次数使数组元素相等

LeetCode#453 最小移动次数使数组元素相等

leetcode 简单 第一百零三题 最小移动次数使数组元素相等

leetcode刷题总结451-500