Leetcode Java Insert Interval
업데이트:
문제
코드
class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
List<int[]> result = new ArrayList<>();
for (int i = 0; i < intervals.length; i++) {
if (intervals[i][0] > newInterval[1]) {
result.add(newInterval);
newInterval = intervals[i];
} else if (intervals[i][1] >= newInterval[0]) {
newInterval = new int[] { Math.min(intervals[i][0], newInterval[0]), Math.max(intervals[i][1], newInterval[1]) };
} else {
result.add(intervals[i]);
}
}
result.add(newInterval);
return result.toArray(new int[result.size()][]);
}
}
결과
설명
-
주어진 2차원 배열 intervals은 구간을 저장한 배열로, 주어진 newInterval 배열을 intervals에 포함시키는 문제이다.
- 결과를 제출할 result 변수를 정의한다.
- 주어진 배열 newInterval이 intervals의 구간에 포함될지, 추가될지 몰라 정확한 배열의 크기를 초기에 확인하기 어려우므로 컬렉션으로 저장한다.
- 주어진 배열 intervals를 반복하여 newInterval을 적용한다.
- intervals[i][0]이 newInterval[1]보다 큰 경우, 해당 구간보다 작은 구간이므로 result에 newInterval을 추가하고 newInterval에 intervals[i]값을 넣는다.
- intervals[i][1]이 newInterval[0]보다 크거나 같은 경우, 해당 구간에 포함되는 경우이므로, 새로운 구간을 생성한다.
- intervals의 시작 값과 newInterval의 시작 값 중 작은 값을 새로운 구간의 시작 값으로 설정한다.
- intervals의 종료 값과 newInterval의 종료 값 중 큰 값을 새로운 구간의 종료 값으로 설정한다.
- 그 외의 경우는 result에 intervals[i]를 추가한다.
- 반복이 종료되면, 마지막으로 newInterval을 result에 추가해준다.
- 구간의 적용을 위해 임시 저장된 구간이므로, 반드시 포함시켜야 한다.
- 새로운 구간들을 저장한 컬렉션인 result를 배열로 변경하여 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기