56. Merge Intervals

来源:互联网 发布:最大的整型数据 编辑:程序博客网 时间:2024/05/17 02:31

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].

思路:
无需对各个区间排序,只需要将需要合并的区间合并起来即可。如果经过判断是独立的区间,则将该区间加入结果集,如果不是独立的区间,则将该区间合并至后续的区间并继续判断下一个区间在剩余的区间中是否是独立的区间。
举个例子,输入为[1,3],[5,6],[10,11],[2,7],
先判断[1,3]是否是独立区间,可见[1,3]可以和[2,7]合并,则将[2,7]修改为[1,7]。
接着判断[5,6]是否可以合并至后面的区间,发现需要将[5,6]与[1,7]合并,合并为[1,7]。
最后,还剩下[10,11]和[1,7]可以先后加入结果集。

/** * Definition for an interval. * public class Interval { *     int start; *     int end; *     Interval() { start = 0; end = 0; } *     Interval(int s, int e) { start = s; end = e; } * } */class Solution {    public List<Interval> merge(List<Interval> intervals) {        int size = intervals.size();        if (size < 2) {            return intervals;        }        List<Interval> result = new ArrayList<Interval>(size);        Interval[] array = intervals.toArray(new Interval[size]);        for (int f = 0; f < size; f++) {            Interval first = array[f];            boolean add = true;            for (int s = f + 1; s < size; s++) {                Interval second = array[s];                if (first.end < second.start || first.start > second.end) {                    continue;                }                if (first.start <= second.start) {                    second.start = first.start;                }                if (first.end >= second.end) {                    second.end = first.end;                }                add = false;                break;            }            if (add) {                result.add(first);            }        }        return result;    }}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 三娘湾大潮 三娘湾海豚 三娘湾自助游 三娘湾攻略 三娘湾 海豚 三娘湾的传说 三娘湾导游词 三娘湾门票团购 三娘湾旅游景区门票 钦州三娘湾风景区图片 丹漪辰子戚 三子丹 葛尔丹之子阿密达一生 子丹个人资料 赤尸为什么害丹辰子 三子棋 三字經 三子经 三子经全文 三子经全文朗读 三子经儿歌 经史百子 年经的搜子 儒家十三经 耕耘子峰 求子念什么经 战国三孔布 三孔布 三孔布妬邑 三孔桥 100分吕姓三字名字 三个字姓夏的帅气名字 郭姓男孩起名三个字 两字姓 二类字 三字狱 王字起名男孩三个字 王字组词 王字成语 王字几画 王字的笔顺 王字加偏旁