Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
The number of elements initialized in nums1 and nums2 are m and n respectively. You may assume that nums1 has enough space (size that is equal to m + n) to hold additional elements from nums2.
Example 1:
Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 Output: [1,2,2,3,5,6]
Example 2:
Input: nums1 = [1], m = 1, nums2 = [], n = 0 Output: [1]
Constraints:
0 <= n, m <= 2001 <= n + m <= 200nums1.length == m + nnums2.length == n-109 <= nums1[i], nums2[i] <= 109
Related Topics:
Array, Two Pointers
Similar Questions:
// OJ: https://leetcode.com/problems/merge-sorted-array/
// Author: github.com/lzl124631x
// Time: O(M + N)
// Space: O(1)
class Solution {
public:
void merge(vector<int>& A, int m, vector<int>& B, int n) {
for (int i = m - 1, j = n - 1, k = m + n - 1; k >= 0;) {
if (j < 0 || (i >= 0 && A[i] > B[j])) A[k--] = A[i--];
else A[k--] = B[j--];
}
}
};