主持人调度

联系一下美团三面的题。两个排序数组,进行合并。
[[1, 3], [6, 10]], [[2, 5], [7, 11]]
合并: [[1, 5], [6, 11]]
解题方法就是每次抽取两个数组中首位最小的,然后与前面提取的末位进行比较,如果小于末位,就可以融合,否则新起一组。

下面的题目其实就是求 最大的有公共区间的数目。

在这里插入图片描述
这道题极有可能面试题,第一种做法很常规,记录每次的结束时间,但是需要排序,因为只需要确定当前的开始时间比记录的结束时间大,那么就不需要增加一个老师。

heapq主要是heapq.heappush和heapqpop得到的就是堆。但是如果是一开始就是List,可以用heapsort。其实要注意,heapq.heapify就是变成堆,但是堆的顺序不代表堆排序后的顺序!!!堆排序后才能得到从小到大的数组。–堆排序可以是最小堆每次拿出第一个。

import heapq
class Solution:
    def minmumNumberOfHost(self , n , startEnd ):
        # write code here
        # 这里用堆的原因其实很明显,先开始不代表先结束。所以我需要把进入堆里的最早结束的进行对比
        res = []
        result = 0
        startEnd = sorted(startEnd, key= lambda x:x[0])
        for i in range(0, n):
            while res:
                if startEnd[i][0] >= res[0]:
                    heapq.heappop(res)
                else:
                    break
            heapq.heappush(res, startEnd[i][1])
            if len(res) > result:
                result = len(res)
        return result

其实细想两种方法是一致的,只是把结束时间提前排了序号。
如果是完全没有交集,那么必定下一位的开头肯定比上一位的结尾大。
[[1,3],[5,6],[7,8]], 如果不大,说明出现交集。那么如果判断到底多少个有交集。那么就是这一位不往后移动了,继续与下一个的开头比较,如果还是小,继续添加老师人数。也就是第二种做法~

class Solution:
    def minmumNumberOfHost(self , n , startEnd ):
        # write code here
        res = []
        result = 0
        end = 0
        res1 = sorted(startEnd, key = lambda x:x[0])
        res2 = sorted(startEnd, key = lambda x:x[1])
        for i in range(len(res1)):
            if res1[i][0]  >= res2[end][1]:
                end += 1
            else:
                result += 1
        return result
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
长期调度、短期调度和中期调度是操作系统中常用的三种调度方式,它们分别用于不同的调度场景。 1. 长期调度 长期调度也称为作业调度,它是指在系统中选择一个作业并将其调入内存,为其分配资源,使其准备运行的过程。长期调度的主要任务是决定哪些作业应该被调入内存,以及决定每个作业所需要的资源,如内存空间、处理器时间等。长期调度通常是由操作系统在系统启动时或者在用户提交作业时执行的,并且它只会执行一次。 2. 短期调度 短期调度也称为进程调度,它是指在系统中选择一个就绪进程,并将其分配给处理器,使其能够执行的过程。短期调度的主要任务是从就绪队列中选择一个进程,并将其分配给CPU执行,以便让进程能够尽快完成任务。短期调度通常是由操作系统在每个时间片结束时执行的,并且它会执行多次。 3. 中期调度 中期调度也称为交换调度,它是指在系统中选择一个进程,并将其从内存中移除,以便为其他进程腾出足够的内存空间。中期调度的主要任务是通过将一些进程交换到磁盘上,从而释放内存空间,以便为其他进程提供足够的内存空间。中期调度通常是由操作系统在系统内存不足时执行的,并且它只会执行一次或者很少执行。 总的来说,长期调度、短期调度和中期调度是操作系统中常用的三种调度方式,它们分别用于不同的调度场景,以提高系统的资源利用率和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值