题解 | #奶牛喂养时间# 贪心

奶牛喂养时间

https://www.nowcoder.com/practice/db2c7c52df0449b49b36e7fe5364f521

知识点

区间合并 贪心

思路

经典区间合并问题,按照左端点排序,相等的话按照右端点排序。维护当前加入段的左右端点,只有下一段的左端点在当前段的右端点右边,不能并入同一段,把当前段加入后,重置加入的段。剩下的情况都是可以加入的。

时间复杂度

主要瓶颈在排序上,O(nlogn)

AC code(C++)

#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param intervals int整型vector<vector<>> 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > mergeTimeIntervals(vector<vector<int> >& intervals) {
        sort(intervals.begin(), intervals.end());
        vector<vector<int>> res;
        int n = intervals.size();
        int st = intervals[0][0], ed = intervals[0][1];
        for (int i = 1; i < n; i ++) {
            if (ed < intervals[i][0]) {
                res.push_back({st, ed});
                st = intervals[i][0], ed = intervals[i][1];
            }
            else {
                st = min(st, intervals[i][0]);
                ed = max(ed, intervals[i][1]);
            }
        }
        res.push_back({st, ed});
        return res;
    }
};

全部评论

相关推荐

05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务