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 1
1
class Solution :
2
2
MOD = 10 ** 9 + 7
3
-
4
3
def solve (self , k ):
5
4
sumDifferences = k * len (self .nums ) - self .sumNums
6
-
7
5
ones = max (2 * (k - self .minNums ) - sumDifferences , 0 )
8
6
if (sumDifferences - ones ) & 1 != 0 :
9
7
ones += 1
10
-
11
8
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 :
16
10
cost2 = min (2 * cost1 , cost2 )
17
-
18
11
self .nums = nums
19
12
self .minNums = min (nums )
20
13
self .sumNums = sum (nums )
21
14
self .cost1 = cost1
22
15
self .cost2 = cost2
23
-
24
16
m = max (nums )
25
-
26
17
sameParity = range (m , 10 ** 18 , 2 )
27
18
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 ))
35
21
return min (self .solve (sameParity [i ]), self .solve (diffParity [j ])) % Solution .MOD
You can’t perform that action at this time.
0 commit comments