일단 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;
}
}