Leetcode Java Non-overlapping Intervals

업데이트:

문제

Link

코드

class Solution {

  public int eraseOverlapIntervals(int[][] intervals) {
    Arrays.sort(intervals, (interval1, interval2) -> {
      return interval1[1] - interval2[1];
    });
    int end = intervals[0][1];
    int count = 1;
    for (int[] interval : intervals) {
      if (interval[0] >= end) {
        end = interval[1];
        count++;
      }
    }
    return intervals.length - count;
  }

}

결과

Link

설명

  1. 배열 intervals가 주어지면 겹치지 않은 구간을 만들기 위해 제거해야 하는 값들의 개수를 구하는 문제이다.
    • intervals[i] = [starti, endi]
  2. intervals를 end 값 기준으로 오름차순 정렬을 수행한다.

  3. 문제 풀이에 필요한 변수를 정의한다.
    • end는 중복되지 않은 구간을 구하기 위한 값을 임시 저장할 변수로, intervals의 첫 값의 두 번째 값인 end 값으로 초기화한다.
    • count는 중복되지 않은 구간을 세기 위한 변수로, 1로 초기화한다.
  4. intervals를 반복하여 count를 계산한다.
    • interval의 첫 값이 end보다 크거나 같은 경우, end에 interval의 두 번째 값을 넣어주고 count를 증가시킨다.
  5. intervals의 크기에 중복되지 않은 구간의 개수인 count를 빼서 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기