1834. 单线程 CPU

class Solution:
    def getOrder(self, tasks: List[List[int]]) -> List[int]:
        q, ans = [], []
        for i, task in enumerate(tasks):
            task.append(i)
        tasks = sorted(tasks, key=lambda x: (x[0], x[2]))
        # 当前时间戳  下一个待执行的任务下标
        timestamp, ptr = 0, 0
        for i in range(len(tasks)):
            # 如果没有可以执行的任务,直接快进
            if not q:
                timestamp = max(timestamp, tasks[ptr][0])
            # 将所有小于等于时间戳的任务放入优先队列
            while ptr < len(tasks) and tasks[ptr][0] <= timestamp:
                heapq.heappush(q, (tasks[ptr][1], tasks[ptr][2]))
                ptr += 1
            processTime, idx = heapq.heappop(q)
            timestamp += processTime
            ans.append(idx)
        return ans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值