3139. Minimum Cost to Equalize Array
Description
You are given an integer array nums and two integers cost1 and cost2. You are allowed to perform either of the following operations any number of times:
- Choose an index
ifromnumsand increasenums[i]by1for a cost ofcost1. - Choose two different indices
i,j, fromnumsand increasenums[i]andnums[j]by1for a cost ofcost2.
Return the minimum cost required to make all elements in the array equal.
Since the answer may be very large, return it modulo 109 + 7.
Example 1:
Input: nums = [4,1], cost1 = 5, cost2 = 2
Output: 15
Explanation:
The following operations can be performed to make the values equal:
- Increase
nums[1]by 1 for a cost of 5.numsbecomes[4,2]. - Increase
nums[1]by 1 for a cost of 5.numsbecomes[4,3]. - Increase
nums[1]by 1 for a cost of 5.numsbecomes[4,4].
The total cost is 15.
Example 2:
Input: nums = [2,3,3,3,5], cost1 = 2, cost2 = 1
Output: 6
Explanation:
The following operations can be performed to make the values equal:
- Increase
nums[0]andnums[1]by 1 for a cost of 1.numsbecomes[3,4,3,3,5]. - Increase
nums[0]andnums[2]by 1 for a cost of 1.numsbecomes[4,4,4,3,5]. - Increase
nums[0]andnums[3]by 1 for a cost of 1.numsbecomes[5,4,4,4,5]. - Increase
nums[1]andnums[2]by 1 for a cost of 1.numsbecomes[5,5,5,4,5]. - Increase
nums[3]by 1 for a cost of 2.numsbecomes[5,5,5,5,5].
The total cost is 6.
Example 3:
Input: nums = [3,5,3], cost1 = 1, cost2 = 3
Output: 4
Explanation:
The following operations can be performed to make the values equal:
- Increase
nums[0]by 1 for a cost of 1.numsbecomes[4,5,3]. - Increase
nums[0]by 1 for a cost of 1.numsbecomes[5,5,3]. - Increase
nums[2]by 1 for a cost of 1.numsbecomes[5,5,4]. - Increase
nums[2]by 1 for a cost of 1.numsbecomes[5,5,5].
The total cost is 4.
Constraints:
1 <= nums.length <= 1051 <= nums[i] <= 1061 <= cost1 <= 1061 <= cost2 <= 106
Solutions
Solution 1
Thinking
Elements may only increase, so the common target is at least the current maximum. \(n\le 10^5\) forbids simulating each increment.
When \(2\cdot cost1\le cost2\) the pairwise operation never helps and the cost is the total gap times \(cost1\). Otherwise gaps should be paired, except when the largest gap is too big to pair freely.
Raising the target further can improve pairing and only a bounded number of extra levels matter. For each candidate, turn the total gap and the largest gap into operation counts and keep the minimum cost modulo \(10^9+7\).
1 | |
1 | |
1 | |
1 | |