Algorithmspartition

Binary Search Partition Ideas

TT
Testlaa Team
May 14, 20261 min read

Partition problems often ask: split into k groups to minimize the maximum sum. Binary search on the maximum sum works when feasibility is monotone.

Try this in Python

def split_array_minimize_largest_sum(nums: list[int], k: int) -> int:
    def can(limit: int) -> bool:
        parts, cur = 1, 0
        for x in nums:
            if cur + x <= limit:
                cur += x
            else:
                parts += 1
                cur = x
                if parts > k:
                    return False
        return True

    lo, hi = max(nums), sum(nums)
    while lo < hi:
        mid = (lo + hi) // 2
        if can(mid):
            hi = mid
        else:
            lo = mid + 1
    return lo


print(split_array_minimize_largest_sum([7, 2, 5, 10, 8], 2))

Key takeaways

  • Classic minimize max pattern.
  • Greedy packing inside check is common.
  • lo starts at max(nums) because each part must hold the largest single element.

Tags:

Binary searchPythonStudents