https://leetcode.com/problems/merge-sorted-array/?envType=study-plan-v2&envId=top-interview-150
비내림차순 정수 배열 nums1와 nums2를 합쳐 비내림차순으로 정렬한다.
def merge(nums1, m, nums2, n):
for (i = 0...n번) :
nums1[m + i] = nums[i];
nums1.sort()
import java.util.*;
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
for(int i = 0; i < n; i++) {
nums1[m + i] = nums2[i];
}
Arrays.sort(nums1);
}
}
Arrays.sort()의 경우 Collections.sort()와 다르게 최악의 경우 O(n^2)가 걸린다고 한다.
이 문제는 nums1의 자료형을 수정할 수 없기 때문에 최선의 방법이지 않을까 싶다.
nums1 배열의 제약조건이 없다면, result 배열을 선언하고, 각 배열의 첫번째를 가리키는 포인터를 두어 비교해가면서 탐색할 수 있을 것 같다.
while p1 < m && p2 < n:
if (nums1[p1] > nums2[p2])
result[p3++] = nums2[p2++]
else if (nums1[p1] < nums2[p2])
result[p3++] = nums1[p1++]
else
result[p3++] = nums1[p1++]
result[p3++] = nums2[p2++]