Union of Two Sorted Arrays
Problem Statement - link #
Union of two arrays can be defined as the common and distinct elements in the two arrays. Given two sorted arrays of size n and m respectively, find their union.
Your Task: You do not need to read input or print anything. Complete the function findUnion() that takes two arrays arr1[], arr2[], and their size n and m as input parameters and returns a list containing the union of the two arrays.
Expected Time Complexity: O(n + m)
 Expected Auxiliary Space: O(n + m)
Examples #
Example 1:
Input: 
n = 5, arr1[] = [1, 2, 3, 4, 5]  
m = 3, arr2 [] = [1, 2, 3]
Output: 1 2 3 4 5
Explanation: Distinct elements including 
both the arrays are: 1 2 3 4 5.
Example 2:
Input: 
n = 5, arr1[] = [2, 2, 3, 4, 5]  
m = 5, arr2[] = [1, 1, 2, 3, 4]
Output: 1 2 3 4 5
Explanation: Distinct elements including 
both the arrays are: 1 2 3 4 5.
Example 3:
Input:
n = 5, arr1[] = [1, 1, 1, 1, 1]
m = 5, arr2[] = [2, 2, 2, 2, 2]
Output: 1 2
Explanation: Distinct elements including 
both the arrays are: 1 2.
Constraints #
- 1 <= n,m <= 10^5
- 1 <= arr[i], brr[i] = 10^6
Solutions #
class Solution{
    public:
    //arr1,arr2 : the arrays
    // n, m: size of arrays
    //Function to return a list containing the union of the two arrays. 
    vector<int> findUnion(int arr1[], int arr2[], int n, int m)
    {
        //Your code here
        //return vector with correct order of elements
        vector<int> res;
        int i=0, j=0;
        while( i < n && j < m){
            if(i > 0 && arr1[i] == arr1[i-1]) { i++; continue ; }
            if(j > 0 && arr2[j] == arr2[j-1]) { j++; continue ; }
            if(arr1[i] == arr2[j]) {res.push_back(arr1[i++]); j++;}
            else if(arr1[i] > arr2[j]) res.push_back(arr2[j++]);
            else res.push_back(arr1[i++]);
        }
        while( i < n ){
            if(arr1[i] == arr1[i-1]) { i++; continue ; }
            res.push_back(arr1[i++]);
        }
        while( j < m ){
            if(arr2[j] == arr2[j-1]) { j++; continue ; }
            res.push_back(arr2[j++]);            
        }
        return res;
    }
};