File tree Expand file tree Collapse file tree 1 file changed +3
-17
lines changed
solution/3100-3199/3139.Minimum Cost to Equalize Array Expand file tree Collapse file tree 1 file changed +3
-17
lines changed Original file line number Diff line number Diff line change 11class 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
You can’t perform that action at this time.
0 commit comments