Minimum Incompatibility LeetCode solution in Python

1
class Solution(object):
2
def minimumIncompatibility(self, nums, k):
3
nums.sort(reverse=True)
4
upperbound = len(nums) // k
5
arr = [[] for _ in range(k)]
6
self.res = float("inf")
7

8
def assign(i):
9
if i == len(nums):
10
self.res = min(self.res, sum(arr[i][0] - arr[i][-1] for i in range(k)))
11
return True
12
flag = 0
13
for j in range(k):
14
if not arr[j] or (len(arr[j]) < upperbound and arr[j][-1] != nums[i]):
15
arr[j].append(nums[i])
16
if assign(i + 1):
17
flag += 1
18
arr[j].pop()
19
if flag >= 2:
20
break
21
return flag != 0
22

23
if max(collections.Counter(nums).values()) > k:
24
return -1
25
assign(0)
26
return self.res

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0