1) arr1 of size n, which contains n positive integers sorted in the ascending order.
2) arr2 of size (2*n) (twice the size of first), which contains n positive integers sorted in the ascending order in its first half. Second half of this array arr2 is empty. (Empty elements are marked by 0).
Write a function that takes these two arrays, and merges the first one into second one, resulting in an increasingly sorted array of (2*n) positive integers.
n = 3
arr1 = [1 3 5]
arr2 = [2 4 6 0 0 0]
Output: arr2 = [1 2 3 4 5 6]
Input Parameters: There are two arguments. First one is an integer array denoting arr1 and second one is also an integer array denoting arr2.
Output: You don't have to return anything. You just need to modify the given array arr2.
● 1 <= n <= 10^5
● 1 <= arr1[i] <= 2 * 10^9
● 1 <= arr2[i] <= 2 * 10^9 (for the first half)
● arr2[i] = 0 (for the second half)
● You can use only constant extra space.
● 0 denotes an empty space.
We are allowed to use only constant extra space. We can start merging from the end.
We could first create empty space at the beginning instead of the end by copying arr2[i] to arr2[n + i] for i from 0 to n - 1, and then start merging from the beginning, but this would add one more loop unnecessarily.
O(n) as we are traversing through the arr1 and arr2 only once.
O(n) due to input size.