leetcode-453-Minimum Moves to Equal Array Elements
来源:互联网 发布:网络对大学生的好处 编辑:程序博客网 时间:2024/06/05 07:14
问题
题目:[leetcode-453]
思路
这个题想了半天没想出来。
看了别人的帖子才会的,先把参考的帖子贴出来[LeetCode453题解]
这个题麻烦主要是麻烦在每次只能是给n-1个元素+1。当然,显然的是每次肯定是最小的n-1个+1。想的到的办法就是模拟。觉得不可取。
看了帖子之后得到的思路是:
- 每次移动的肯定是最小的n-1个元素。但是这其实是相当于,把最大的元素-1。这一点我没有想到。所以,“移动的过程”可以变为每次把最大元素-1
- 其次,最后一样的元素肯定是数组中最小的元素。这个可以反证法去证明:假设在t时刻,存在一个元素a比数组中之前的元素小。那么由这个假设我们可以知道,除了a之外的其余元素都是a+1。否则,如果有比a+1大的元素,那么此时应该减去比a+1大的这个元素才行。因为剩下的元素都是a+1,那么可以知道上一个时刻所有元素就已经都是a+1了。即此时已经没有最大元素。不需要减-1。
最后说一下总的次数:
代码
class Solution {public: int minMoves(vector<int>& nums) { int sz = nums.size(); int sum = nums[0]; int min = nums[0]; for(int i = 1; i < sz; ++i){ min = (min < nums[i])?min:nums[i]; sum += nums[i]; } return sum - sz*min; }};
0 0
- Leetcode Minimum Moves to Equal Array Elements
- leetcode :Minimum Moves to Equal Array Elements
- LEETCODE--Minimum Moves to Equal Array Elements
- LeetCode : Minimum Moves to Equal Array Elements
- leetcode-Minimum Moves to Equal Array Elements
- leetcode[Minimum Moves to Equal Array Elements]
- Minimum Moves to Equal Array Elements(leetcode)
- leetcode Minimum Moves to Equal Array Elements 453
- [leetcode 453]Minimum Moves to Equal Array Elements
- LeetCode No.453 Minimum Moves to Equal Array Elements
- Leetcode 453 Minimum Moves to Equal Array Elements
- leetcode 453 Minimum Moves to Equal Array Elements C++
- [Leetcode] 453 Minimum Moves to Equal Array Elements
- leetcode-453-Minimum Moves to Equal Array Elements
- leetcode 453 Minimum Moves to Equal Array Elements
- Leetcode #453 Minimum Moves to Equal Array Elements
- LeetCode 453 Minimum Moves to Equal Array Elements
- Leetcode 453 Minimum Moves to Equal Array Elements
- 20170120
- make工程管理器
- 001_Oracle数据库、SQL语言的介绍
- C++ I/O流常用控制符
- HDU1587-Flowers
- leetcode-453-Minimum Moves to Equal Array Elements
- android之给其他应用提供拍照信息
- Activiti工作流引擎的官方实例配置详细步骤
- 【C++心路历程21】NOIP2003普及组复赛第4题数字游戏
- 替罪羊树学习总结
- LCA-并查集+tarjan-poj2874
- 工程管理器的简介以及shell脚本实践指南
- LCM调试总结
- makefile模板的修改步骤