Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Merge Sorted Arrays

Problem Statement

Given two sorted integer arrays, merge them into a single sorted array. The solution should handle the arrays efficiently without using extra space beyond the output array.

Example

Input: nums1 = [1, 2, 3], nums2 = [2, 5, 6]

Output: [1, 2, 2, 3, 5, 6]

Code

Java
Python
JavaScript
public class Solution {
    public int[] mergeSortedArrays(int[] nums1, int[] nums2) {
        int[] result = new int[nums1.length + nums2.length];
        int i = 0, j = 0, k = 0;
        
        while (i < nums1.length && j < nums2.length) {
            if (nums1[i] <= nums2[j]) {
                result[k++] = nums1[i++];
            } else {
                result[k++] = nums2[j++];
            }
        }
        
        while (i < nums1.length) {
            result[k++] = nums1[i++];
        }
        while (j < nums2.length) {
            result[k++] = nums2[j++];
        }
        
        return result;
    }
}
            
def merge_sorted_arrays(nums1, nums2):
    result = []
    i, j = 0, 0
    
    while i < len(nums1) and j < len(nums2):
        if nums1[i] <= nums2[j]:
            result.append(nums1[i])
            i += 1
        else:
            result.append(nums2[j])
            j += 1
    
    result.extend(nums1[i:])
    result.extend(nums2[j:])
    return result

# Example usage
print(merge_sorted_arrays([1, 2, 3], [2, 5, 6]))
            
function mergeSortedArrays(nums1, nums2) {
    const result = [];
    let i = 0, j = 0;
    
    while (i < nums1.length && j < nums2.length) {
        if (nums1[i] <= nums2[j]) {
            result.push(nums1[i++]);
        } else {
            result.push(nums2[j++]);
        }
    }
    
    return result.concat(nums1.slice(i), nums2.slice(j));
}

// Example usage
console.log(mergeSortedArrays([1, 2, 3], [2, 5, 6]));
            

Explanation

  • Use two pointers to track positions in both arrays.
  • Compare elements and add the smaller one to the result.
  • Move the pointer of the array from which an element was taken.
  • Append remaining elements from either array, if any.

Note

Time complexity is O(n + m) where n and m are the lengths of the input arrays. Space complexity is O(n + m) for the result array.