Problem
두 개의 배열 nums1, nums2 를 nums1 에 하나로 합치는 문제입니다.
두 배열은 이미 정렬되어있고 합쳐진 nums1 도 정렬되어야 합니다.
nums1 은 nums2 의 길이인 n 만큼의 추가 공간이 있으며 해당 공간은 0 으로 채워져 있습니다.
Solution
단순하게 비교해서 넣으면 되는 문제입니다.
이렇게 추가 공간 없이 in place 로 구현해야 하는 문제는 새로 바뀐 값이 이후 로직에 영향을 주면 안됩니다.
따라서 배열의 뒤부터 비교해가며 넣어줍니다.
i 또는 j 가 0 이 되고 나면 나머지 하나가 0 이 될때까지 배열을 채워야 합니다.
i 는 이미 배열에 채워져 있기 때문에 j 가 0 이 될 때까지만 값을 넣어주면 됩니다
Java Code
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int index = m + n - 1;
int i = m - 1;
int j = n - 1;
while (i >= 0 && j >= 0) {
if (nums1[i] < nums2[j]) {
nums1[index--] = nums2[j--];
} else {
nums1[index--] = nums1[i--];
}
}
while (j >= 0) {
nums1[index--] = nums2[j--];
}
}
}'알고리즘 문제 > LeetCode' 카테고리의 다른 글
| [LeetCode Easy] Valid Parentheses (Java) (0) | 2020.12.29 |
|---|---|
| [LeetCode Easy] Palindrome Linked List (Java) (2) | 2020.12.29 |
| [LeetCode Easy] Reverse Bits (Java) (0) | 2020.12.28 |
| [LeetCode Easy] Linked List Cycle (Java) (0) | 2020.12.28 |
| [LeetCode Easy] Intersection of Two Linked Lists (Java) (0) | 2020.12.28 |