453. Minimum Moves to Equal Array Elements
来源:互联网 发布:知乎 陌生人 编辑:程序博客网 时间:2024/05/18 03:23
这道题的原理是每次数组的n-1个数要加一个值,直到最后所有值相等,增加的值就是当前数组的最大值减最小值的差值。
开始我还每次都把数组算出来,求出每次的最大值和最小值,这样很耗时,结果超时了。
错误做法
class Solution {public: int minMoves(vector<int>& nums) { int minindex=FindMinIndex(nums); int maxindex=FindMaxIndex(nums); int step=0; while(nums[minindex]<nums[maxindex]) { int differ=nums[maxindex]-nums[minindex]; step=step+differ; for(int i=0;i<nums.size();i++) { if(i==maxindex) continue; nums[i]=nums[i]+differ; } minindex=FindMinIndex(nums); maxindex=FindMaxIndex(nums); } return step; } int FindMinIndex(vector<int>& nums) { int index=0; int min=nums[0]; for(int i=1;i<nums.size();i++) { if(nums[i]<min) { index=i; min=nums[i]; } } return index; } int FindMaxIndex(vector<int>& nums) { int index=0; int max=nums[0]; for(int i=1;i<nums.size();i++) { if(nums[i]>max) { index=i; max=nums[i]; } } return index; }};
第二种做法:后来想到只要求出数组所右元素减去最小值得累加和,就是要增加的步数。
class Solution {public: int minMoves(vector<int>& nums) { if(nums.size()==1) return 0; int minindex=FindMinIndex(nums); int moves=0; for(int i=0;i<nums.size();i++) { moves=moves+nums[i]-nums[minindex]; } return moves; } int FindMinIndex(vector<int>& nums) { int index=0; int min=nums[0]; for(int i=1;i<nums.size();i++) { if(nums[i]<min) { index=i; min=nums[i]; } } return index; }};
0 0
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements*
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- 453. Minimum Moves to Equal Array Elements
- Queue Reconstruction by Height
- codevs 3290 noip 2013 Day2 T3华容道
- ajax异步刷新上传文件
- UOJ #35. 后缀排序(后缀数组模板题)
- c++初学之面向对象
- 453. Minimum Moves to Equal Array Elements
- 《APUE》笔记-第九章-进程关系
- curl工具与常见命令
- CodeForces 405A Gravity Flip【水题】
- 【Android - V】之ViewPager的使用
- js event对象整理及详细介绍
- 第十周练习-2 判断回文数
- C语言 模拟实现strcmp strncmp
- python实现不断模拟客户端请求,实现压力测试