File tree 1 file changed +29
-0
lines changed
non-overlapping-intervals
1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * 주어진 interval 배열에서 구간이 서로 겹치지 않기 위해서 제거해야 하는 최소한의 interval 수 구하기.
3
+ * @param {number[][] } intervals - interval 정보를 담는 2차원 배열 [start, end][]
4
+ * @returns {number } - 제거한 interval 최소 개수
5
+ */
6
+ function eraseOverlapIntervals ( intervals : number [ ] [ ] ) : number {
7
+ // interval의 end 기준으로 정렬
8
+ intervals . sort ( ( a , b ) => a [ 1 ] - b [ 1 ] ) ;
9
+
10
+ // 제거해야 하는 interval 수
11
+ let result = 0 ;
12
+ // 비교할 기준 interval
13
+ let prevInterval = intervals [ 0 ] ;
14
+
15
+ // 0 idx를 기준으로 하기 때문에 1번 idx부터 비교
16
+ for ( let i = 1 ; i < intervals . length ; i ++ ) {
17
+ // 이전 idx와 비교할 interval이 겹치는 경우
18
+ if ( intervals [ i ] [ 0 ] < prevInterval [ 1 ] ) {
19
+ result ++ ;
20
+ } else {
21
+ // 겹치치 않는경우 기준 interval 변경
22
+ prevInterval = intervals [ i ] ;
23
+ }
24
+ }
25
+
26
+
27
+ return result ;
28
+ }
29
+
You can’t perform that action at this time.
0 commit comments