C++ 程序从两个排序数组中打印不常见的元素
给定两个不同元素的排序数组,我们需要打印两个数组中不常见的元素。输出应按排序顺序打印。
例子 :
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;
}
输出 :
10 25 40 50
有关详细信息,请参阅有关从两个排序数组中打印不常见元素的完整文章!