https://leetcode.com/problems/merge-sorted-array/

Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]

1번 배열에 2번 배열을 합치면 된다. 배열에 init 되어있는 수 만큼 argument로 넘겨진다.

class Solution {
public:
	void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)
	{
		int numsIdx = m - 1;
		int num2Idx = n - 1;
		int wIdx = nums1.size() - 1;
		while (numsIdx >= 0 && num2Idx >= 0)
		{
			if (nums1[numsIdx] <= nums2[num2Idx])
				nums1[wIdx--] = nums2[num2Idx--];
			else
				nums1[wIdx--] = nums1[numsIdx--];
		}
		while (num2Idx >= 0)
		{
			nums1[wIdx--] = nums2[num2Idx--];
		}
	}
};

0보다 크거나같을 때까지만 해주면 된다. index가 -1이 되면 끝이난다.

채워지지 않은 값들도 마저 넣어주면 된다.

두개의 ptr 가 index 0 까지 이동하는 시간 O(n + m) 을 가지게 된다.