88. Merge Sorted Array

LeetCode Link

Problem statement:

You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively.

Merge nums1 and nums2 into a single array sorted in non-decreasing order.

The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.

Logic:

My code:

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int k=0;
        for(int i = m+1; i <= nums1.length ; i++){

            nums1[i] = nums2[k];
            k++;
        }
        return int[] nums1;

    }
}

Issues in Your Code:

  1. for (int i = m+1; i <= nums1.length; i++):

    • This loop will go out of bounds. Array indices go from 0 to nums1.length - 1, so i <= nums1.length is invalid.

    • Also, it should start from m, not m+1.

  2. return int[] nums1; is:

    • Invalid syntax in Java.

    • The function return type is void, so you should not return anything.

  3. The logic directly copies elements from nums2 to nums1 without sorting or merging properly.


✅ Correct Approach (Two-Pointer from End):

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int i=m-1;
        int j =n-1;
        int k= m+n-1;

        while(i>=0 && j>=0){
            if(nums1[i]>nums2[j]){
                nums1[k] = nums1[i];
                k--;
                i--;
            }
            else{
                nums1[k] = nums2[j];
                k--;
                j--;
            }
        }
        while(j>=0){ nums1[k--] = nums2[j--];} // edge case

    }
}
0
Subscribe to my newsletter

Read articles from Dibyashree Chakravarty directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Dibyashree Chakravarty
Dibyashree Chakravarty