3ms O(n) C++ solution


  • 0
    J
    public:
        void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
            nums1.resize(m + n, 0);
            int i = m - 1, j = n - 1, k = m + n - 1;
            while(i >= 0 && j >= 0) {
                if(nums1[i] > nums2[j])  {
                    nums1[k--] = nums1[i--];
                }
                else {
                    nums1[k--] = nums2[j--];
                }
            }
            while(i >= 0) nums1[k--] = nums1[i--];
            while(j >= 0) nums1[k--] = nums2[j--];
            return;
        }
    };

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.