2013-08-21 2 views
3

시간 간격이 설정된 경우 겹치는 부분의 최대 수를 찾는 방법은 다음과 같습니다. 시간 복잡도 O (n log n) 또는 O (n)과 주어진 문제를 해결하는 알고리즘이 있습니까 ??모든 시간 간격의 겹치기 최대 수

예 : (6 : 00-9 : 30), (9 : 00-12 : 30), (10 : 00-10 : 30), (12 : 00-14 : 30) -13 : 30). 대답은 3입니다.

+1

O(n) 시간이 걸린다. 항목이 서로 다른 두 세트에 겹치면 하나의 겹침 또는 두 개의 겹침으로 간주됩니까? 또한 (12:14:30) 맞습니까? 타임 스탬프인가요? 그것은 다른 세트들에 비추어 볼 때 일관성이 없습니다. – Firo

+2

4 시간 중복되지 않습니까? (12:14:30)은 (12 : 00-14 : 30) –

+0

@Firo가 오타라고 가정합니다. 편집 된 버전을 참조하십시오. – user2601967

답변

16

빠른 정렬 - O(nlogn) 시간을 사용하여 값을 정렬하십시오.

6:00(+) 
9:30(-) 
9:00(+) 
12:30(-) 
10:00(+) 
10:30(-) 
12:14:30(Dude wut?) --> Im going to assume you meant 12:00(+) ,14:30(-) 
11:00(+) 
13:30(-) 

모든 플러스 증가 및 모든 빼기 위해 감소시키는 목록을

6:00(+) 
9:00(+) 
9:30(-) 
10:00(+) 
10:30(-) 
11:00(+) 
12:00(+) 
12:30(-) 
13:30(-) 
14:30(-) 

반복 처리를하게되고, 발견 된 최대 값을 기록한다. 이

총 시간에 따라 다르다 O(nlogn + n) = O(nlogn)

+0

@gbtimmon, 그 놀라운 사람! 감사 – user2601967

관련 문제