前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >462. 最少移动次数使数组元素相等

462. 最少移动次数使数组元素相等

作者头像
用户7447819
发布2021-07-23 14:39:08
4420
发布2021-07-23 14:39:08
举报
文章被收录于专栏:面试指北面试指北

462. 最少移动次数使数组元素相等

1. 题目描述

给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。您可以假设数组的长度最多为10000。

例如:

输入: [1,2,3]

输出: 2

说明:只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1):

[1,2,3] => [2,2,3] => [2,2,2]

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

2. 题解

这道题偏数学一点,我们从常理推论的角度去想,如果要找到使所有数组元素相等的最小移动数。那么这个元素就是数组其他元素离它距离之和最近的数,这个元素就是数组中的中位数。

2.1 解题步骤

  • 对数组元素进行排序
  • 找到中位数
  • 遍历数组,计算所有元素与中位数的距离
  • 累加距离,即可得到目标值。
代码语言:javascript
复制
class Solution {
    public int minMoves2(int[] nums) {
        // 对数组进行排序
        Arrays.sort(nums);
        int result = 0;
        // 遍历数组,计算与中位数的距离
        for (int num : nums) {
            result += Math.abs(num - nums[nums.length / 2]);
        }
        return result;
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 面试指北 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 462. 最少移动次数使数组元素相等
    • 1. 题目描述
      • 2. 题解
        • 2.1 解题步骤
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档