C++程序 打印两个排序数组中不常见的元素

C++程序 打印两个排序数组中不常见的元素

给定两个不同元素的排序数组,我们需要打印来自两个数组的不常见元素。输出应以排序顺序打印。

示例:

输入: arr1[] = {10, 20, 30}
        arr2[] = {20, 25, 30, 40, 50}
输出: 10 25 40 50
因为20和30在两个数组中都存在, 所以不打印这些元素。

输入: arr1[] = {10, 20, 30}
        arr2[] = {40, 50}
输出: 10 20 30 40 50

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

// C++ program to find uncommon elements of
// two sorted arrays
#include <bits/stdc++.h>
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++;
        }
 
        // 跳过共同的元素
        else {
            i++;
            j++;
        }
    }
 
    // 打印剩余元素
    while (i < n1) {
        cout << arr1[i] << " ";
        i++;
        k++;
    }
    while (j < n2) {
        cout << arr2[j] << " ";
        j++;
        k++;
    }
}
 
// 主函数
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;
}  

输出:

10 25 40 50

时间复杂度: O(n1 + n2),其中n1和n2表示给定两个数组的大小。
辅助空间:O(1),不需要额外空间,因此它是一个常量。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例