• Segment Tree-732. My Calendar III


    Implement a MyCalendarThree class to store your events. A new event can always be added.

    Your class will have one method, book(int start, int end). Formally, this represents a booking on the half open interval [start, end), the range of real numbers x such that start <= x < end.

    K-booking happens when K events have some non-empty intersection (ie., there is some time that is common to all K events.)

    For each call to the method MyCalendar.book, return an integer K representing the largest integer such that there exists a K-booking in the calendar.

    Your class will be called like this: MyCalendarThree cal = new MyCalendarThree(); MyCalendarThree.book(start, end)

    Example 1:

    MyCalendarThree();
    MyCalendarThree.book(10, 20); // returns 1
    MyCalendarThree.book(50, 60); // returns 1
    MyCalendarThree.book(10, 40); // returns 2
    MyCalendarThree.book(5, 15); // returns 3
    MyCalendarThree.book(5, 10); // returns 3
    MyCalendarThree.book(25, 55); // returns 3
    Explanation: 
    The first two events can be booked and are disjoint, so the maximum K-booking is a 1-booking.
    The third event [10, 40) intersects the first event, and the maximum K-booking is a 2-booking.
    The remaining events cause the maximum K-booking to be only a 3-booking.
    Note that the last event locally causes a 2-booking, but the answer is still 3 because
    eg. [10, 20), [10, 40), and [5, 15) are still triple booked.

    #include <iostream>
    #include <vector>
    #include <map>
    #include <set>
    #include <queue>
    #include <stack>
    #include <string>
    #include <climits>
    #include <algorithm>
    #include <sstream>
    #include <functional>
    #include <bitset>
    #include <numeric>
    #include <cmath>
    #include <regex>
    
    using namespace std;
    
    
    
    class MyCalendarThree 
    {
    public:
        map<int, int> mmp;
        MyCalendarThree() 
        {
    
        }
    
        int book(int start, int end) 
        {
            mmp[start]++;
            mmp[end]--;
            int maxCount = 0 , sum = 0;
            for (auto a : mmp)
            {
                sum += a.second;
                if (sum > maxCount)
                    maxCount = sum;
            }
            return maxCount;
        }
    };
  • 相关阅读:
    angular-ui-bootstrap的弹出框定义成一个服务的实践(二)
    分享百度文件上传组件webUploader的使用demo
    display的flex属性使用详解
    数组去重(初识ES6)
    在ng中的select的使用方法的讲解
    安装xamp之后,appach、mysql等问题的总结
    python中string.casefold和string.lower区别
    python3数据类型
    MySQL bin-log 日志清理方式
    python终端颜色设置
  • 原文地址:https://www.cnblogs.com/msymm/p/8278250.html
Copyright © 2020-2023  润新知