Skip to content

Commit d536b1e

Browse files
Update Solution.py
1 parent 2c0a20a commit d536b1e

File tree

1 file changed

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

1 file changed

+11
-3
lines changed
Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
class Solution:
22
MOD = 10**9 + 7
3+
34
def solve(self, k):
45
sumDifferences = k * len(self.nums) - self.sumNums
56
ones = max(2 * (k - self.minNums) - sumDifferences, 0)
67
if (sumDifferences - ones) & 1 != 0:
78
ones += 1
89
return ones * self.cost1 + ((sumDifferences - ones) // 2) * self.cost2
9-
def minCostToEqualizeArray(self, nums: List[int], cost1: int, cost2: int) -> int:
10+
11+
def minCostToEqualizeArray(self, nums: list[int], cost1: int, cost2: int) -> int:
12+
from bisect import bisect_left
13+
1014
cost2 = min(2 * cost1, cost2)
1115
self.nums = nums
1216
self.minNums = min(nums)
@@ -16,6 +20,10 @@ def minCostToEqualizeArray(self, nums: List[int], cost1: int, cost2: int) -> int
1620
m = max(nums)
1721
sameParity = range(m, 10**18, 2)
1822
diffParity = range(m + 1, 10**18, 2)
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))
23+
i = bisect_left(
24+
sameParity, 0, key=lambda i: self.solve(i + 2) - self.solve(i)
25+
)
26+
j = bisect_left(
27+
diffParity, 0, key=lambda j: self.solve(j + 2) - self.solve(j)
28+
)
2129
return min(self.solve(sameParity[i]), self.solve(diffParity[j])) % Solution.MOD

0 commit comments

Comments
 (0)