📌  相关文章
📜  从两个排序的数组中打印不常见的元素

📅  最后修改于: 2021-05-07 00:19:16             🧑  作者: Mango

给定两个不同元素的排序数组,我们需要从两个不常见的数组中打印这些元素。输出应按排序顺序打印。
例子 :

Input : arr1[] = {10, 20, 30}
        arr2[] = {20, 25, 30, 40, 50}
Output : 10 25 40 50
We do not print 20 and 30 as these
elements are present in both arrays.

Input : arr1[] = {10, 20, 30}
        arr2[] = {40, 50}
Output : 10 20 30 40 50
        

这个想法是基于合并排序的合并过程。我们遍历两个数组并跳过公共元素。

C++
// C++ program to find uncommon elements of
// two sorted arrays
#include 
using namespace std;
 
void printUncommon(int arr1[], int arr2[],
                           int n1, int n2)
{
 
    int i = 0, j = 0, k = 0;
    while (i < n1 && j < n2) {
 
        // If not common, print smaller
        if (arr1[i] < arr2[j]) {
            cout << arr1[i] << " ";
            i++;
            k++;
        }
        else if (arr2[j] < arr1[i]) {
            cout << arr2[j] << " ";
            k++;
            j++;
        }
 
        // Skip common element
        else {
            i++;
            j++;
        }
    }
 
    // printing remaining elements
    while (i < n1) {
        cout << arr1[i] << " ";
        i++;
        k++;
    }
    while (j < n2) {
        cout << arr2[j] << " ";
        j++;
        k++;
    }
}
 
// Driver code
int main()
{
    int arr1[] = {10, 20, 30};
    int arr2[] = {20, 25, 30, 40, 50};
 
    int n1 = sizeof(arr1) / sizeof(arr1[0]);
    int n2 = sizeof(arr2) / sizeof(arr2[0]);
 
    printUncommon(arr1, arr2, n1, n2);
 
    return 0;
}


Java
// Java program to find uncommon elements
// of two sorted arrays
import java.io.*;
 
class GFG {
     
    static void printUncommon(int arr1[],
                     int arr2[], int n1, int n2)
    {
 
        int i = 0, j = 0, k = 0;
        while (i < n1 && j < n2) {
 
            // If not common, print smaller
            if (arr1[i] < arr2[j]) {
                System.out.print(arr1[i] + " ");
                i++;
                k++;
            }
            else if (arr2[j] < arr1[i]) {
                System.out.print(arr2[j] + " ");
                k++;
                j++;
            }
 
            // Skip common element
            else {
                i++;
                j++;
            }
        }
 
        // printing remaining elements
        while (i < n1) {
            System.out.print(arr1[i] + " ");
            i++;
            k++;
        }
        while (j < n2) {
            System.out.print(arr2[j] + " ");
            j++;
            k++;
        }
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int arr1[] = { 10, 20, 30 };
        int arr2[] = { 20, 25, 30, 40, 50 };
 
        int n1 = arr1.length;
        int n2 = arr2.length;
 
        printUncommon(arr1, arr2, n1, n2);
    }
}
 
// This code is contributed by vt_m


Python3
# Python 3 program to find uncommon
# elements of two sorted arrays
 
 
def printUncommon(arr1, arr2, n1, n2) :
     
    i = 0
    j = 0
    k = 0
    while (i < n1 and j < n2) :
 
        # If not common, print smaller
        if (arr1[i] < arr2[j]) :
            print( arr1[i] , end= " ")
            i = i + 1
            k = k + 1
             
        elif (arr2[j] < arr1[i]) :
            print( arr2[j] , end= " ")
            k = k + 1
            j = j + 1
 
        # Skip common element
        else :
            i = i + 1
            j = j + 1
     
    # printing remaining elements
    while (i < n1) :
        print( arr1[i] , end= " ")
        i = i + 1
        k = k + 1
     
    while (j < n2) :
        print( arr2[j] , end= " ")
        j = j + 1
        k = k + 1
  
  
# Driver code
arr1 = [10, 20, 30]
arr2 = [20, 25, 30, 40, 50]
 
n1 = len(arr1)
n2 = len(arr2)
 
printUncommon(arr1, arr2, n1, n2)
 
 
 
# This code is contributed
# by Nikita Tiwari.


C#
// C# program to find uncommon elements
// of two sorted arrays
using System;
class GFG {
 
static void printUncommon(int []arr1,
                          int []arr2,
                          int n1,
                          int n2)
    {
 
        int i = 0, j = 0, k = 0;
        while (i < n1 && j < n2)
        {
 
            // If not common, print smaller
            if (arr1[i] < arr2[j])
            {
                Console.Write(arr1[i] + " ");
                i++;
                k++;
            }
            else if (arr2[j] < arr1[i])
            {
                Console.Write(arr2[j] + " ");
                k++;
                j++;
            }
 
            // Skip common element
            else
            {
                i++;
                j++;
            }
        }
 
        // printing remaining elements
        while (i < n1)
        {
            Console.Write(arr1[i] + " ");
            i++;
            k++;
        }
        while (j < n2)
        {
            Console.Write(arr2[j] + " ");
            j++;
            k++;
        }
    }
 
    // Driver Code
    public static void Main()
    {
        int []arr1 = {10, 20, 30};
        int []arr2 = {20, 25, 30, 40, 50};
 
        int n1 = arr1.Length;
        int n2 = arr2.Length;
 
        printUncommon(arr1, arr2, n1, n2);
    }
}
 
// This code is contributed by Sam007


PHP


Javascript


输出 :
10 25 40 50