题解 | #主持人调度(二)#

主持人调度(二)

https://www.nowcoder.com/practice/4edf6e6d01554870a12f218c94e8a299

方法:贪心算法

具体步骤:

  • 使用两个辅助数组分别存储节目的开始时间和结束时间;
  • 对上面两个数组进行排序(从小到大)
  • 遍历n个活动,如果某个活动开始的时间大于之前活动结束的时候,当前主持人就够了,活动结束时间往后一个。若是出现之前活动结束时间晚于当前活动开始时间的,则需要增加主持人。

时间复杂度:o(nlog2n),排序时间需要o(nlog2n)。

空间复杂度:o(n)

class Solution {
  public:
    int minmumNumberOfHost(int n, vector<vector<int> >& startEnd) {
        vector<int> start;
        vector<int> end;

        for (int i = 0; i < startEnd.size(); i++) {
            start.push_back(startEnd[i][0]);
            end.push_back(startEnd[i][1]);
        }

        sort(start.begin(), start.end());
        sort(end.begin(), end.end());

        int j = 0;
        int res = 0;
        for (int i = 0; i < start.size(); i++) {
            if (start[i] >= end[j])
                j++;
            else
                res++;
        }

        return res;
    }
};

刷题题解(c++) 文章被收录于专栏

算法题题解(c++)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务