Skip to content

Commit 221f56c

Browse files
Update Solution.py
1 parent 6015d6f commit 221f56c

File tree

1 file changed

+3
-17
lines changed
  • solution/3100-3199/3139.Minimum Cost to Equalize Array

1 file changed

+3
-17
lines changed
Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,21 @@
11
class Solution:
22
MOD = 10**9 + 7
3-
43
def solve(self, k):
54
sumDifferences = k * len(self.nums) - self.sumNums
6-
75
ones = max(2 * (k - self.minNums) - sumDifferences, 0)
86
if (sumDifferences - ones) & 1 != 0:
97
ones += 1
10-
118
return ones * self.cost1 + ((sumDifferences - ones) // 2) * self.cost2
12-
13-
def minCostToEqualizeArray(
14-
self, nums: List[int], cost1: int, cost2: int
15-
) -> int:
9+
def minCostToEqualizeArray(self, nums: List[int], cost1: int, cost2: int) -> int:
1610
cost2 = min(2 * cost1, cost2)
17-
1811
self.nums = nums
1912
self.minNums = min(nums)
2013
self.sumNums = sum(nums)
2114
self.cost1 = cost1
2215
self.cost2 = cost2
23-
2416
m = max(nums)
25-
2617
sameParity = range(m, 10**18, 2)
2718
diffParity = range(m + 1, 10**18, 2)
28-
i = bisect_left(
29-
sameParity, 0, key=lambda i: self.solve(i + 2) - self.solve(i)
30-
)
31-
j = bisect_left(
32-
diffParity, 0, key=lambda j: self.solve(j + 2) - self.solve(j)
33-
)
34-
19+
i = bisect_left(sameParity, 0, key=lambda i: self.solve(i + 2) - self.solve(i))
20+
j = bisect_left(diffParity, 0, key=lambda j: self.solve(j + 2) - self.solve(j))
3521
return min(self.solve(sameParity[i]), self.solve(diffParity[j])) % Solution.MOD

0 commit comments

Comments
 (0)