1665. 完成所有任务的最少初始能量

题目描述:给你一个任务数组 tasks ,其中 tasks[i] = [actuali, minimumi] :actuali 是完成第 i 个任务 需要耗费 的实际能量。minimumi 是开始第 i 个任务前需要达到的最低能量。比方说,如果任务为 [10, 12] 且你当前的能量为 11 ,那么你不能开始这个任务。如果你当前的能量为 13 ,你可以完成这个任务,且完成它后剩余能量为 3 。你可以按照 任意顺序 完成任务。请你返回完成所有任务的最少初始能量。
解题思路:因为最小的能量是大于等于实际消耗的能量的,所以我们只要保证每次剩余的能量是大于最小能量就可以了,因此我们首先执行(minval-actval)更大的能量,这样在满足最小能量的前提下又能剩下更多的能量,代码如下:

class Solution:
    def minimumEffort(self, tasks: List[List[int]]) -> int:
        tasks = sorted(tasks, key=lambda x: -(x[1] - x[0]))
        res = 0
        left = 0
        consume = 0
        for t in tasks:
            res += max(t[1] - left, 0)
            consume += t[0]
            left = res - consume
        return res
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值