博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 453 Minimum Moves to Equal Array Elements
阅读量:5836 次
发布时间:2019-06-18

本文共 892 字,大约阅读时间需要 2 分钟。

Problem:

Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.

Example:

Input:[1,2,3]Output:3Explanation:Only three moves are needed (remember each move increments two elements):[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

Summary:

对于一个长度为n的整型数数组,每步将n-1个元素加1,求最少需要多少步,能使数组中的数字全部相同。

Analysis:

若使数组尽快满足题目要求,则需要每次给除去最大值的其余数字加1,但这种方法效率过低,可以换一种思路。每次将数组中的n-1个数字加1,相当于将剩余的一个数字减1。所以只需找到数组中的最小值m,计算m与数组中其他数字差的累计和即可。

1 class Solution { 2 public: 3     int minMoves(vector
& nums) { 4 sort(nums.begin(), nums.end()); 5 int len = nums.size(), res = 0; 6 7 for (int i = 1; i < len; i++) { 8 res += nums[i] - nums[0]; 9 }10 11 return res;12 }13 };

 

转载于:https://www.cnblogs.com/VickyWang/p/6056587.html

你可能感兴趣的文章
百度PaddlePaddle常规赛NLP赛道火热开启
查看>>
稳了!这才是cookie,session与token的真正区别
查看>>
python项目实战:制作一个简易的GUI界面浏览器
查看>>
OSChina 周二乱弹 —— 假期余额已不足!
查看>>
OSChina 周一乱弹 —— 亚洲四大邪术!
查看>>
前端那些事之React篇--helloword
查看>>
swift3.0 常用字符操作 <持续整理>
查看>>
Oracle11g及PL/SQL Developer的安装和配置
查看>>
ios的google解析XML框架GDataXML的配置及使用
查看>>
Ubuntu各类软件推荐
查看>>
关于angular post提交数据接收问题
查看>>
查找两个增序数组中第K大的数
查看>>
java程序员为什么使用Groovy
查看>>
netty-当一个客户端连接到来的时候发生了什么
查看>>
java socket编程实例代码讲解
查看>>
PHP_5.3.20 源码编译安装PHP-FPM
查看>>
动态代理解释-JDK,CGLIB,JAVASSIST,ASM
查看>>
在51CTO三年年+了,你也来晒晒
查看>>
js控制图片等比例缩放
查看>>
Java高级开发工程师面试考纲
查看>>