410. Split Array Largest Sum (Hard) - TengnanYao/daily_leetcode GitHub Wiki

class Solution(object):
    def splitArray(self, nums, m):
        """
        :type nums: List[int]
        :type m: int
        :rtype: int
        """
        l, r = max(nums), sum(nums)
        while l < r:
            mid = (l + r) // 2
            count, cur = 1, 0
            for num in nums:
                cur += num
                if cur > mid:
                    cur = num
                    count += 1
            if count > m:
                l = mid + 1
            else:
                r = mid
        return l