ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [알고리즘] Merge Intervals (O)
    알고리즘/배열 2021. 4. 20. 10:50

    Problem

    Key Point

    종료 시간보다 큰 시작 시간이 나올 때 까지 before에 시간을 머지한다.

    Code

    public class MergeInterval {
        public List<Interval> solution(List<Interval> intervals) {
            if(intervals.isEmpty()) return intervals;
            List<Interval> result = new ArrayList<>();
    
            Collections.sort(intervals, (o1, o2) -> o1.getStart() - o2.getStart());
    //        print(intervals);
    
            Interval before = intervals.get(0);
            for (int i = 1; i < intervals.size(); i++) {
                Interval current = intervals.get(i);
                if (before.getEnd() > current.getStart()) {
                    before.setEnd(Math.max(before.getEnd(), current.getEnd()));
                } else {
                    result.add(before);
                    before = current;
                }
            }
            if (!result.contains(before)) {
                result.add(before);
            }
            print(result);
            return result;
        }
        private void print(List<Interval> intervals) {
            for (int i = 0; i < intervals.size(); i++) {
                Interval in = intervals.get(i);
                System.out.println(in.getStart() + " " + in.getEnd());
            }
        }
        public static void main(String[] args) {
            List<Interval> intervals = Arrays.asList(new Interval(1, 3), new Interval(2, 6), new Interval(8, 10), new Interval(15, 18));
            MergeInterval mergeInterval = new MergeInterval();
            List<Interval> result = mergeInterval.solution(intervals);
        }
    }

     

    '알고리즘 > 배열' 카테고리의 다른 글

    [알고리즘] Two Sum  (0) 2021.04.20
    [알고리즘] Daily temperatures (O)  (0) 2021.04.20
    [알고리즘] Meeting Rooms II  (0) 2021.04.20
    [알고리즘] Jewels And Stones  (0) 2021.04.20
    [알고리즘] License Key Formatting  (0) 2021.04.19

    댓글

Designed by Tistory.