贪心算法-主持人调度

原题:
牛客网算法题代码执行过程图

解答:
最少需要几个主持人,即所有的活动可以分为最少几组,且组内的时间不重合,活动时间不重合即是下一个活动的开始时间大于上一个活动的结束时间,由此,把开始时间和结束时间分别存储到两个vector类型a和b中,然后将a、b按照从小到大顺序排序,以b,即结束时间为比较对象,使用a中的开始时间逐个和b中的结束时间作比较,如果小于,则需要分为两组,即主持人数poi加一,否则把b中的比较对象加一,即结束时间往后推一个,因为结束时间和开始时间是从小到大排序,所以,如果当前的开始时间大于等于当前结束时间,则容器之后的开始时间都会大于等于当前的结束时间,所以当前的结束时间没有比较必要,将i+1,结束时间往后推一个。推后一个后,如果当前开始时间小于当前结束时间,则应主持人数加一,当前开始时间应当位于上一个结束时间和当前结束时间之间。
第二张图为代码过程执行图,图中每一个箭头都是一个开始时间,都应该对应到坐标轴上的一个结束时间,箭头上有加号的都表示当前的组浮于上一组的上面。层层叠叠。

代码:

class Solution {
   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值