Minimum Difference in Sums After Removal of Elements LeetCode solution in Python
1class Solution:2def minimumDifference(self, nums: List[int]) -> int:3h = heapq4k = len(nums) // 35min_heap, max_heap, min_sol, max_sol, min_sum, max_sum, sol = (6[],7[],8[],9[],100,110,12[],13)14h.heapify(max_heap), h.heapify(min_heap)15for x in nums[:-k]:16h.heappush(min_heap, -x)17min_sum += x18if len(min_heap) > k:19min_sum += h.heappop(min_heap)20min_sol.append(min_sum)21for x in nums[::-1][:-k]:22h.heappush(max_heap, x)23max_sum += x24if len(max_heap) > k:25max_sum -= h.heappop(max_heap)26max_sol.append(max_sum)27min_sol = min_sol[k - 1 :]28max_sol = max_sol[k - 1 :][::-1]29return min(30min_value - max_value for min_value, max_value in zip(min_sol, max_sol)31)