간격의 집합을 감안할 때, 모든 중복 간격을 병합합니다.
예 1 :
입력 : [1,3], [2,6], [8,10], [15,18] 출력 : [1,6], [8,10], [15,18] 설명 : 간격 [1,3]와 [2,6] 오버랩 [1,6]로 병합 때문이다.
예 2 :
입력 : [1,4], [4,5] 출력 : [1,5] 설명 : 간격 [1,4]와 [4,5]을 중복으로 간주된다.
참고 : 입력 유형 4 월 15 일에 변경되었습니다, 기본 코드 정의에 2019하시기 바랍니다 재설정은 새로운 방법 서명을 얻을 수 있습니다.
클래스 해결 { 공공 INT [] [] 병합 ( INT [] []의 간격) { 목록 < INT [] "입술 = 새로운 ArrayList를 <> (); 경우 (intervals.length == 0 ) { 돌아가 새로운 지능 [] [] {}; } Arrays.sort에 (간격 (a, b) -> (A [0] - B [0 ])); INT 시작 = 간격 [0] [0 ]; INT의 단부 = 간격 [0] [1 ]; 대 ( INT {간격 [] 간격) 만약(간격 [0] <= 단부) { 단 = Math.max (단, 간격 [1 ]); } 다른 { res.add ( 새로운 INT [{시작 단부}); 시작 = 간격 [0 ]; 단부 = 간격 [1 ]; } } // 마지막 튜플 다시 추가 할 필요 res.add는 ( 새로운 INT는 [] {} 시작, 종료) 창 res.toArray ( 새로운 INT [] [] {}); } }