zoukankan      html  css  js  c++  java
  • 462. Minimum Moves to Equal Array Elements II

    Given a non-empty integer array, find the minimum number of moves required to make all array elements equal, where a move is incrementing a selected element by 1 or decrementing a selected element by 1. You may assume the array's length is at most 10,000.

    Example:

    Input:
    [1,2,3]
    
    Output:
    2
    
    Explanation:
    Only two moves are needed (remember each move increments or decrements one element):
    
    [1,2,3]  =>  [2,2,3]  =>  [2,2,2]

    给定一个非空的整型数组,找到使所有数组元素相等所需的最小移动次数,移动是将所选元素递增1或将选定元素递减1。您可以假设阵列的长度最多为10,000。

    例:

    输入: 
    [1,2,3] 输出: 
    2 说明: 
    只需要两个移动(记住每个移动增加或减少一个元素):
    [1,2,3] => [2,2,3] => [2 ,2,2]

    (1)思想1:首先对数组进行排序sort(),然后找到其中间值mid = nums[nums.size()/2],然后再对“其余值减去中间值”进行一个求和,便是最终的结果。

    C++:

     1 class Solution {
     2 public:
     3     int minMoves2(vector<int>& nums) {
     4         sort(nums.begin(),nums.end());
     5         int mid=nums[nums.size()/2];
     6         int result=0;
     7         for(int i=0;i<nums.size();i++)
     8             result=result+abs(nums[i]-mid);
     9         return result;
    10     }
    11 };

    python:

    1 class Solution:
    2     def minMoves2(self, nums):
    3         nums.sort()
    4         result=0
    5         mid=nums[int(len(nums)/2)]
    6         for x in nums:
    7             result=result+abs(x-mid)
    8         return result
  • 相关阅读:
    Android 之 Android目录
    Android之新建项目
    Android 所遇问题(一)
    Android运行机制
    C#编程语法积累(二)
    C#编程的语法积累(一)
    MVC4.0网站发布
    SQLServer 之 树查询
    Linux回收站[改写rm防止误删文件无法恢复]
    音视频同步(播放)原理
  • 原文地址:https://www.cnblogs.com/sword-/p/8038227.html
Copyright © 2011-2022 走看看