Given a collection of intervals, merge all overlapping intervals.

For example,
Given  [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].

看起来感觉不像hard类型的题目,不过要注意的一点是这里给出的数据不一定会像上面这样按照顺序来进行排序,所以处理前首先要按照一定的规则处理一下,写一个functor来进行比较,用struct即可,排序后这个范围就很好确定了,代码如下所示:

 class Solution {
public:
vector<Interval> merge(vector<Interval>& intervals) {
int p = , q = ;
std::sort(intervals.begin(), intervals.end(), comp);
vector<Interval> ret;
while(q < intervals.size()){
if(intervals[p].end < intervals[q].start){ //这个范围需要记录下来
ret.push_back(intervals[p]);
p = q;
q++;
}else{
if(intervals[p].end < intervals[q].end) //根据条件才更新范围
intervals[p].end = intervals[q].end;
q++;
}
}
if(p < intervals.size())
ret.push_back(intervals[p]);
return ret;
} struct myComparator{
bool operator()(const Interval & i, const Interval & j){
return i.start < j.start;
}
}comp;
};

java版本的代码如下所示:

 public class Solution {
public List<Interval> merge(List<Interval> intervals) {
Collections.sort(intervals, new Comparator<Interval>(){
public int compare(Interval i1, Interval i2){
return i1.start - i2.start;
}
});
int sz = intervals.size();
List<Interval> ret = new ArrayList<Interval>();
if(sz == 0) return ret;
int prev = 0, next = 1;
while(next < sz){
if(intervals.get(prev).end < intervals.get(next).start){
ret.add(intervals.get(prev));
prev = next;
next++;
}else{
intervals.get(prev).end = Math.max(intervals.get(prev).end, intervals.get(next).end);
next++;
}
}
intervals.get(prev).end = Math.max(intervals.get(prev).end, intervals.get(sz-1).end);
ret.add(intervals.get(prev));
return ret;
}
}

LeetCode OJ:Merge Intervals(合并区间)的更多相关文章

  1. [LeetCode] 56 - Merge Intervals 合并区间

    Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

  2. LeetCode 56. Merge Intervals 合并区间 (C++/Java)

    题目: Given a collection of intervals, merge all overlapping intervals. Example 1: Input: [[1,3],[2,6] ...

  3. [LeetCode] Merge Intervals 合并区间

    Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...

  4. 【LeetCode每天一题】Merge Intervals(合并区间)

    Given a collection of intervals, merge all overlapping intervals. Example 1: Input: [[1,3],[2,6],[8, ...

  5. 056 Merge Intervals 合并区间

    给出一个区间的集合, 请合并所有重叠的区间.示例:给出 [1,3],[2,6],[8,10],[15,18],返回 [1,6],[8,10],[15,18].详见:https://leetcode.c ...

  6. [leetcode]56. Merge Intervals归并区间

    Given a collection of intervals, merge all overlapping intervals. Example 1: Input: [[1,3],[2,6],[8, ...

  7. Leetcode56. Merge Intervals合并区间

    给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] ...

  8. LeetCode 56. Merge Intervals (合并区间)

    Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

  9. 合并区间 · Merge Intervals & 插入区间 · Insert Interval

    [抄题]: 给出若干闭合区间,合并所有重叠的部分. 给出的区间列表 => 合并后的区间列表: [ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10] ...

  10. 【LeetCode】Merge Intervals 题解 利用Comparator进行排序

    题目链接Merge Intervals /** * Definition for an interval. * public class Interval { * int start; * int e ...

随机推荐

  1. cocos2d-x 2.x.x 新建工程 android下的 org文件夹丢失

    cocos2d-x 2.x.x 新建工程之后... 打开android项目..会发现src下没有org文件... 解决方法一: cocos2d-x-2.2.0\cocos2dx\platform\an ...

  2. 仿netty线程池简化版本

    package com.hcxy.car.threadpools; import java.io.IOException; import java.nio.channels.Selector; imp ...

  3. Ubuntu16.04安装印象笔记

    Nixnote 是一个 Evernote 开源客户端,原名 Nevernote.Evernote 是一个著名的笔记等个人资料整理和同步软件, 因为 Evernote 没有 Linux 下的官方版本,因 ...

  4. C++之条形码,windows下zint库的编译及应用(二)

    zint库是一个开源的第三方库,提供了生成条形码.二维码等功能.本文主要介绍zint库的生成及简单应用.   0windows下zint库的编译及应用(一)   工具/原料   vs2012 生成条形 ...

  5. 【分库分表】sharding-jdbc—解决的问题

    一.遇到的问题 随着互联网技术和业务规模的发展,单个db的表里数据越来越多,sql的优化已经作用不明显或解决不了问题了,这时系统的瓶颈就是单个db了(或单table数据太大).这时候就涉及到分库分表的 ...

  6. Web安全学习笔记之Nmap脚本使用指南

    nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统.它是网络管理员必用的软件之一,以及用以评估网络系统安全. —— 来自百 ...

  7. jquery的prev选择器无效

    今天使用jquery操作dom 需要把当前元素的同级元素中前面带有属性a=1的元素筛选出来. 查看api, .prev()  获得匹配元素集合中每个元素紧邻的前一个同辈元素,由选择器筛选(可选). 看 ...

  8. XPO开发指南简要

    一.XPO简介: XPO即eXpress Persistent Objects for .NET,现在这里介绍的版本是1.5. XPO在应用程序代码和数据库之间扮演了一个中间层的角色,简单而言,就是将 ...

  9. LeetCode——Single Element in a Sorted Array

    Question Given a sorted array consisting of only integers where every element appears twice except f ...

  10. Css(样式)

    CSS三种样式 1.行内样式         ①将css样式与html,完全糅杂在一起,不符合w3c关于“内容与表现分离”的基本规范,不利于后期维护.         ②优先级最高. 2.内部样式表 ...