Minimum Incompatibility LeetCode solution in Python
1class Solution(object):2def minimumIncompatibility(self, nums, k):3nums.sort(reverse=True)4upperbound = len(nums) // k5arr = [[] for _ in range(k)]6self.res = float("inf")78def assign(i):9if i == len(nums):10self.res = min(self.res, sum(arr[i][0] - arr[i][-1] for i in range(k)))11return True12flag = 013for j in range(k):14if not arr[j] or (len(arr[j]) < upperbound and arr[j][-1] != nums[i]):15arr[j].append(nums[i])16if assign(i + 1):17flag += 118arr[j].pop()19if flag >= 2:20break21return flag != 02223if max(collections.Counter(nums).values()) > k:24return -125assign(0)26return self.res