1011. Capacity To Ship Packages Within D Days

https://leetcode.com/problems/capacity-to-ship-packages-within-d-days/description/?envType=company&envId=tiktok&favoriteSlug=tiktok-three-months

class Solution:
    def shipWithinDays(self, weights: List[int], days: int) -> int:
        n=len(weights)
        r=sum(weights)
        l=max(weights)

        @cache
        def check(capacity):
            i=0
            d=0
            while i<n:
                d+=1
                tank=capacity
                while i<n and tank>=weights[i]:
                    tank-=weights[i]
                    i+=1
            return d
            
        while 1:
            m=(l+r)//2
            if check(m)==days and check(m-1)<days:
                return m
            elif check(m)<=days:
                r=m
            elif check(m)>days:
                l=m
            if r-l<=1:
                if check(l)<=days:
                    return l
                return r

注意最小的left

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值