zoukankan      html  css  js  c++  java
  • Leectcode732. 我的日程安排表 III:

    Leectcode732. 我的日程安排表 III:

          实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排。MyCalendar 有一个 book(int start, int end)方法。它意味着在start到end时间内增加一个日程安排,注意,这里的时间是半开区间,即 [start, end),左闭右开, 日历 x 的范围为,  start <= x < end。

    当 K 个日程安排有一些时间上的交叉时(例如K个日程安排都在同一时间内),就会产生 K 次预订。

    每次调用 MyCalendar.book方法时,返回一个整数 K ,表示最大的 K 次预订。

    请按照以下步骤调用MyCalendar 类: MyCalendar cal = new MyCalendar(); MyCalendar.book(start, end)

    思路很重要思路: 

    第一次K为1 因为在区间 [start, end)最少有1个可以book的日程

    第二次K为2因为在另外一个区间与 [start, end)有交集

    第三次K为3,因为在第三个区间内又有与 [start, end)有交集

    import collections


    class MyCalendarThree:

        def __init__(self):

            #构建字典对象
            self.book_dict = collections.defaultdict(int)

        def book(self, start: 'int', end: 'int') -> 'int':
            self.book_dict[start]+=1
            self.book_dict[end]-=1
            outdegree = 0
            max = 0

            #计算出度则为最大预订次数
            for i,j in sorted(self.book_dict.items()):
                outdegree+=j
                if max < outdegree:
                    max=outdegree
            return max

  • 相关阅读:
    最短路变形题目 HDU多校7
    交换一个数字的任意两个位置,指定K次的最值
    七彩线段
    带限制的广搜 codeforces
    在一个矩阵内求一个最长上升子序列
    函数,以及三元运算符
    文件操作
    基础数据类型补充以及python编码
    深浅copy,is和==区别,集合,列表的操作
    字典和枚举
  • 原文地址:https://www.cnblogs.com/maxforb/p/12714220.html
Copyright © 2011-2022 走看看