package com.freetymekiyan.algorithms.level.easy; /** * Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. * <p> * Note: * You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from * nums2. The number of elements initialized in nums1 and nums2 are m and n respectively. * <p> * Company Tags: Microsoft, Bloomberg, Facebook * Tags: Array, Two Pointers * Similar Problems: (E) Merge Two Sorted Lists */ public class MergeSortedArray { /** * Array. Two Pointers. * One pointer i at the end of nums1. Another pointer j at the end of nums2. * Compare their values and put the larger one at the end of nums1. * The index is m+n+1. * If m == 0, nums1 is fully merged, merge the rest of nums2. */ private void merge(int nums1[], int m, int nums2[], int n) { for (int i = m - 1, j = n - 1, k = m + n - 1; k >= 0 && j >= 0; k--) { nums1[k] = (i < 0 || nums1[i] < nums2[j]) ? nums2[j--] : nums1[i--]; } } }