二分法,当条件符合时扩大左边界,否则缩小右边界,输出时判断 l 是否满足条件

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param a int整型一维数组 
# @param k int整型 
# @return int整型
#
class Solution:
    def cutWood(self , a: List[int], k: int) -> int:
        def check(a, k, m):
            n = 0
            for ai in a:
                if ai < m:
                    continue
                else:
                    n += ai // m
                if n >= k:
                    break
            return n >= k
        l, r = 1, max(a) + 1
        s = sum(a)
        while l < r:
            m = l + (r - l) // 2
            if check(a, k, m):
                l = m + 1
            else:
                r = m
        return l if check(a, k, l) else l - 1