Leetcode Java Non-overlapping Intervals
업데이트:
문제
코드
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;
}
}
결과
설명
- 배열 intervals가 주어지면 겹치지 않은 구간을 만들기 위해 제거해야 하는 값들의 개수를 구하는 문제이다.
- intervals[i] = [starti, endi]
-
intervals를 end 값 기준으로 오름차순 정렬을 수행한다.
- 문제 풀이에 필요한 변수를 정의한다.
- end는 중복되지 않은 구간을 구하기 위한 값을 임시 저장할 변수로, intervals의 첫 값의 두 번째 값인 end 값으로 초기화한다.
- count는 중복되지 않은 구간을 세기 위한 변수로, 1로 초기화한다.
- intervals를 반복하여 count를 계산한다.
- interval의 첫 값이 end보다 크거나 같은 경우, end에 interval의 두 번째 값을 넣어주고 count를 증가시킨다.
- intervals의 크기에 중복되지 않은 구간의 개수인 count를 빼서 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기