문제 링크
요약
- 그냥 Merge Sort 하면 된다.
최종
결과
- 그냥 Merge Sort 하면 된다. 다만,
nums1의 원소들을 in-place 로 처리하기 귀찮아서 그냥 copy 해서 merge 했다.
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
vector<int> nums1_clone(m);
int i_1 = 0;
int i_2 = 0;
for (int i = 0; i < m; i++) {
nums1_clone[i] = nums1[i];
}
for (int i = 0; i < m + n; i++) {
if (i_1 < m && i_2 < n) {
if (nums1_clone[i_1] < nums2[i_2]) {
nums1[i] = nums1_clone[i_1];
i_1++;
} else {
nums1[i] = nums2[i_2];
i_2++;
}
} else if (i_1 < m) {
nums1[i] = nums1_clone[i_1];
i_1++;
} else if (i_2 < n) {
nums1[i] = nums2[i_2];
i_2++;
} else {
// Should not happen
}
}
}
};