合并重叠间隔

合并重叠间隔,第1张

合并重叠间隔

Ideone.java:

import java.util.*;public class Ideone{       public static void main (String[] args) throws java.lang.Exception    {        ArrayList<Interval> x = new ArrayList<>();        x.add(new Interval(1, 3));        x.add(new Interval(2, 6));        x.add(new Interval(8, 10));        x.add(new Interval(15, 18));        x.add(new Interval(17, 20));        x = merge(x);        for(Interval i : x)        { System.out.println(i.getStart() + " " + i.getEnd());        }    }    public static ArrayList<Interval> merge(ArrayList<Interval> intervals) {        if(intervals.size() == 0 || intervals.size() == 1) return intervals;        Collections.sort(intervals, new IntervalComparator());        Interval first = intervals.get(0);        int start = first.getStart();        int end = first.getEnd();        ArrayList<Interval> result = new ArrayList<Interval>();        for (int i = 1; i < intervals.size(); i++) { Interval current = intervals.get(i); if (current.getStart() <= end) {     end = Math.max(current.getEnd(), end); } else {     result.add(new Interval(start, end));     start = current.getStart();     end = current.getEnd(); }        }        result.add(new Interval(start, end));        return result;    }}class Interval {    private int start;    private int end;    Interval() {        start = 0;        end = 0;    }    Interval(int s, int e)     {        start = s;        end = e;    }    public int getStart() {        return start;    }    public int getEnd() {        return end;    }}class IntervalComparator implements Comparator<Interval>{    public int compare(Interval i1, Interval i2)    {        return i1.getStart() - i2.getStart();    }}
  • main
    方法在
    public class Ideone
  • Interval
    IntervalComparator
    只是内部类

输出:

1 68 1015 20


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5040652.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-15
下一篇2022-11-15

发表评论

登录后才能评论

评论列表(0条)

    保存