[LC] 56 병합 간격

간격의 집합을 감안할 때, 모든 중복 간격을 병합합니다.

예 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 [] [] {}); 
    } 
}

 

추천

출처www.cnblogs.com/xuanlu/p/11904893.html