Menu
CoddyTech

Non-overlapping Intervals

구간 i는 starts[i]부터 ends[i]까지입니다. 나머지 구간 중 서로 겹치는 구간이 없도록 제거해야 하는 구간의 최소 개수를 반환하세요. 한 구간이 끝나는 지점에서 다른 구간이 시작되어 맞닿기만 하는 두 구간은 겹치지 않습니다.

함수

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
각 구간의 시작
endsinteger-array
각 구간의 끝으로, 시작과 같은 인덱스에 있습니다
반환값integer
나머지 구간이 서로 겹치지 않도록 제거해야 하는 구간의 최소 개수

제약 조건

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • 구간은 정렬되어 있지 않습니다. 두 구간은 동일할 수 있습니다.

예제

입력
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
출력
2
설명
시작 순서대로 구간은 [1,4], [2,3], [3,6], [5,7]입니다. 서로 맞닿기만 하는 [2,3]과 [3,6]은 남기고, 나머지 2개는 제거하세요. 세 개를 남길 수는 없습니다. [1,4]는 [2,3]과 겹치고, [3,6]은 [5,7]과 겹칩니다.
challenge icon

후속 질문

모든 구간에 값이 있고 서로 겹치지 않는 구간들 중 총값이 가장 큰 경우를 찾고 싶다고 가정해 봅시다. 가장 먼저 끝나는 구간을 계속 선택하는 방법이 여전히 통할까요?

코드 초기화
def eraseOverlapIntervals(starts, ends):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

starts = [3, 1, 5, 2]
ends = [6, 4, 7, 3]

예상 출력

2