435. Non-overlapping Intervals

intervals[i] = [starti, endi]인 간격의 배열이 주어지면 나머지 간격이 겹치지 않도록 제거해야 하는 최소 간격 수를 반환

435. Non-overlapping Intervals

class Solution {
    
    // 나머지 간격이 겹치지 않도록 제거해야 하는 최소 간격 수: 겹치는 건수를 찾는다.
    // T: O(nlogn)
    public int eraseOverlapIntervals(int[][] intervals) {
        
        int count = 0; 
        
        // 종료지점(end)을 기준으로 정렬한다.
        Arrays.sort(intervals, (a, b) -> a[1] - b[1]);
        
        // 시작지점의 종료값
        int prevEnd = intervals[0][1]; 
        
        for (int i = 1; i < intervals.length; i++) {
            // 이전 종료값이 현재 시작값보다 크면 겹친다.
            if (prevEnd > intervals[i][0]) {
                // 작은값으로 갱신 
                prevEnd = Math.min(prevEnd, intervals[i][1]);
                count++;
            } else {
                // 다음 종료값으로 넘어간다.
                prevEnd = intervals[i][1];
            }
        }
        
        return count;
    }
}





© 2017. by yeopoong.github.io

Powered by yeopoong