Merge Sorted Array

  • pain point :
    • vector<int>res(m+n,0);
    • it is int i = m - 1 , not i = nums1.size();
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {

        // "345" ""
        // "222" "2"
        // "347"  "12345"
        // "344999"  "5"
       int len = m+n-1;
       int i = m - 1;
       int j = n - 1;
       vector<int>res(m+n,0);

       while(i >= 0 && j >= 0){
           res[len--] = nums2[j] > nums1[i] ?  nums2[j--] : nums1[i--];
       }
        while(i >= 0)
            res[len--] = nums1[i--];
        while(j >= 0)
            res[len--] = nums2[j--];
        nums1 = res;
    }
};