【LeetCode】最小操作次数使数组元素相等 Java 题解
题目描述
给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。
复制代码
思路分析
今天的算法题目是数组元素相等题目。题目要求,每次操作将会使 n - 1 个元素增加 1。乍一看这个题目比较难,数据不好处理。参考官方题解之后,分析发现,我们不需要考虑数组中各个元素的绝对大小,只需要考虑数组中元素相对大小的变化即可。因此,每次操作既可以理解为使 n-1 个元素增加 1,也可以理解使 1 个元素减少 1。
思路转化之后,先求出数组元素的最小值,然后求出每个元素转换成最小值元素的次数,即为答案。
通过代码
复制代码
总结
上述代码的时间复杂度是 O(n), 空间复杂度是 O(1)
这个题目的代码实现比较简单,思路不容易想到,要多总结这类处理问题的思路,更好的掌握这个算法思想。
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/b56d1d7f0635d23316970480f】。文章转载请联系作者。
评论