[Intervals, Medium] Non-overlapping Intervals

송재호·2025년 4월 3일
0

https://leetcode.com/problems/non-overlapping-intervals/description/?envType=study-plan-v2&envId=leetcode-75

일단 intervals[i] = [start i, end i] 이므로 겹치는 부분 찾으려면 end기준 정렬이 필요할 듯

Arrays.sort(intervals, (a, b) -> Integer.compare(a[1], b[1]));

end 오름차순 정렬되어 있으니 직전의 end와 현재 start를 비교해서
갱신할지, 카운트를 증가시킬지 결정할 수 있겠다.

intervals[i][0] < prevEnd -> 현재 start가 직전 end보다 작음. 지워야 함. 카운트 증가
그 외 -> prevEnd = intervals[i][1] end를 갱신

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[1], b[1]));

        int count = 0;
        int prevEnd = intervals[0][1];

        for (int i=1; i<intervals.length; i++) {
            if (intervals[i][0] < prevEnd) {
                count++; // 겹치는 경우
            } else {
                prevEnd = intervals[i][1]; // 겹치지 않는 경우 갱신
            }
        }
        return count;
    }
}
profile
식지 않는 감자

0개의 댓글