Skip to content

Latest commit

 

History

History
114 lines (88 loc) · 2.23 KB

File metadata and controls

114 lines (88 loc) · 2.23 KB

中文文档

Description

Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal.

In one move, you can increment n - 1 elements of the array by 1.

 

Example 1:

Input: nums = [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]

Example 2:

Input: nums = [1,1,1]
Output: 0

 

Constraints:

  • n == nums.length
  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109

Solutions

Python3

class Solution:
    def minMoves(self, nums: List[int]) -> int:
        return sum(nums) - min(nums) * len(nums)

Java

class Solution {
    public int minMoves(int[] nums) {
        return Arrays.stream(nums).sum() - Arrays.stream(nums).min().getAsInt() * nums.length;
    }
}
class Solution {
    public int minMoves(int[] nums) {
        int s = 0;
        int mi = Integer.MAX_VALUE;
        for (int num : nums) {
            s += num;
            mi = Math.min(mi, num);
        }
        return s - mi * nums.length;
    }
}

C++

class Solution {
public:
    int minMoves(vector<int>& nums) {
        int s = 0;
        int mi = INT_MAX;
        for (int num : nums)
        {
            s += num;
            mi = min(mi, num);
        }
        return s - mi * nums.size();
    }
};

Go

func minMoves(nums []int) int {
	mi := math.MaxInt32
	s := 0
	for _, num := range nums {
		s += num
		if num < mi {
			mi = num
		}
	}
	return s - mi*len(nums)

}

...