문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
두 개의 2차원 정수 배열 nums1과 nums2가 주어진다.
각 배열은 고유한 id를 포함하고, id를 기준으로 오름차순 정렬되어 있다.
다음 조건을 준수하여 두 배열을 id 기준 오름차순으로 정렬된 하나의 배열로 병합해라.
결과 배열을 반환해라. 반환되는 배열은 id를 기준으로 오름차순 정렬되어 있어야 한다.
#1
Input: nums1 = [[1, 2], [2, 3], [4, 5]], nums2 = [[1, 4], [3, 2], [4, 1]]
Output: [[1, 6], [2, 3], [3, 2], [4, 6]]
#2
Input: nums1 = [[2, 4], [3, 6], [5, 5]], nums2 = [[1, 3], [4, 3]]
Output: [[1, 3], [2, 4], [3, 6], [4, 3], [5, 5]]
class Solution {
public int[][] mergeArrays(int[][] nums1, int[][] nums2) {
int i = 0;
int j = 0;
List<int[]> result = new ArrayList<>();
while (i < nums1.length && j < nums2.length) {
if (nums1[i][0] == nums2[j][0]) {
result.add(new int[]{
nums1[i][0],
nums1[i][1] + nums2[j][1]
});
i++;
j++;
} else if (nums1[i][0] < nums2[j][0]) {
result.add(nums1[i]);
i++;
} else {
result.add(nums2[j]);
j++;
}
}
while (i < nums1.length) {
result.add(nums1[i++]);
}
while (j < nums2.length) {
result.add(nums2[j++]);
}
return result.toArray(new int[result.size()][]);
}
}