zoukankan      html  css  js  c++  java
  • leetcode56 区间合并

    题目:给出一个区间集合,求合并所有重叠后的区间。

    分析:区间处理先上套路,按左端点作第一维,右端点作第二维进行排序。依次考察每个区间,假设前面所有区间合并后是[left, right],若当前区间的左端点小于等于right,right=max(right, 当前区间的右端点);否则说明有空格,将[left, right]加入答案,新区间作为[left, right]。

    class Solution {
    public:
        vector<vector<int>> merge(vector<vector<int>>& intervals) {
            int n = intervals.size();
            if(n == 0)  return {};
            vector<vector<int>>ans;
            vector<pair<int, int>>myinter;
            for(int i = 0;i < n;i++)
                myinter.push_back(make_pair(intervals[i][0], intervals[i][1]));
            sort(myinter.begin(), myinter.end());
    
            int left = myinter[0].first, right = myinter[0].second;
            for(int i = 1;i < n;i++)
            {
                if(myinter[i].first <= right)  
                    right = max(right, myinter[i].second);
                else
                {
                    ans.push_back(vector<int>{left, right});
                    left = myinter[i].first;
                    right = myinter[i].second;
                }
            }
            ans.push_back(vector<int>{left, right});
            return ans;
        }
    };

    推荐用pair实现,因为pair会自动将first作第一关键字,second作第二关键字排序,这样就不用自己写个cmp函数。

  • 相关阅读:
    一些集群操作以及问题查询
    .a 文件 和 so 文件
    KNN算法
    opendir函数和readdir函数内涵及用法
    tps 和 qps的区别
    Git使用(积累一些常用的命令)
    MurmurHash
    HyperLogLog
    MySQL主从不生效且无错误
    正则表达式与SQL
  • 原文地址:https://www.cnblogs.com/lfri/p/12711600.html
Copyright © 2011-2022 走看看