Minimum Moves to Equal Array Elements
Description
Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.
Example:
Input: [1,2,3]Output: 3
Explanation: Only three moves are needed (remember each move increments two elements):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
Solution(javascript)
/*
* @lc app=leetcode id=453 lang=javascript
*
* [453] Minimum Moves to Equal Array Elements
*/
// @lc code=start
// /** 1: Brute Force Time Limited Exceed
// * @param {number[]} nums
// * @return {number}
// */
// const minMoves = function (nums) {
// const isEqual = () => nums.every(n => n === nums[0])
// let count = 0
// while (!isEqual(nums)) {
// nums.sort((a, b) => a - b)
// count += 1
// for (let i = 0; i < nums.length - 1; i++) {
// nums[i] += 1
// }
// }
// return count
// }
/** 2: 找规律
* @param {number[]} nums
* @return {number}
*/
const minMoves = function (nums) {
return nums.reduce((acc, num) => acc + num, 0) - nums.length * Math.min(...nums)
}
// @lc code=end