zoukankan      html  css  js  c++  java
  • (合并 重叠数组)练习容器的用法

    • 题目
      给定间隔的集合,合并所有重叠间隔。
      
      例如,
      给定[1,3],[2,6],[8,10],[15,18]
      return [1,6],[8,10],[15,18]。
    • 题目分析:合并重叠的数组,这里首先是定义排序规则,给所有数组进行排序,然后合并重叠的就行了。
    • 代码
      /**
       * Definition for an interval.
       * struct Interval {
       *     int start;
       *     int end;
       *     Interval() : start(0), end(0) {}
       *     Interval(int s, int e) : start(s), end(e) {}
       * };
       */
          bool comp(const Interval &a, const Interval &b){
              if (a.start == b.start)//如果第一个元素相同,就按照最后一个元素比较;如果不同就按第一个元素来排序
                  return a.end < b.end;
              else
                  return a.start < b.start;
          }
      class Solution {
      public:
          vector<Interval> merge(vector<Interval> &intervals) {
              sort(intervals.begin(), intervals.end(), comp);//定义排序规则,按照升序排序
              vector<Interval> res;
              int len = intervals.size();
              for (int i=0; i<len; i++){
                  if (res.empty())
                      res.push_back(intervals[i]);
                  else{
                      Interval last = res.back();//找到res里面的最后一个元素与当前interval元素进行比较
                      if (last.end >= intervals[i].start){//当前一个元素end大于当前元素start时,在比较end与end之间,进行合并
                          res.pop_back();
                          last.end = max(last.end, intervals[i].end);
                          res.push_back(last);
                      }else//如果不能合并,直接入容器
                          res.push_back(intervals[i]);
                  }
              }
              return res;
          }
      
      };
  • 相关阅读:
    Linux命令笔记
    拆功放板笔记
    从输入 URL 到页面加载完的过程中都发生了什么---优化
    python学习笔记(三)
    python学习笔记(二)
    python学习笔记(一)
    公交wifi运营平台分析
    testNG小试牛刀
    maven小项目注册服务(三)--web模块
    用maven进行测试
  • 原文地址:https://www.cnblogs.com/Kobe10/p/6367292.html
Copyright © 2011-2022 走看看