在 C++ 中查找三个已排序数组的公共元素
假设我们有三个包含一些元素的数组。我们必须查找出现在这三个数组中的所有公共元素。假设这些元素为 [10, 12, 15, 20, 25]、[10, 12, 13, 15] 和 [10, 12, 15, 24, 25, 26],那么这三个数组中的公共元素就是 10、12 和 15。
假设在数组 A1 中遍历的当前元素为 x,A2 为 y,A3 为 z。我们可以对它们有以下情况 -
如果 x、y 和 z 相同,那么我们将打印其中的任何一个,并增加每个数组元素 1
当 x < y 时,我们将继续在 A1 中前进,因为 x 不能是公共元素
当 x > z 且 y > z 时,我们将继续为 A3 前进,因为 z 不能是公共元素。
示例
#include<iostream>
using namespace std;
void findCommonValues(int A1[], int A2[], int A3[], int n1, int n2, int n3) {
int i = 0, j = 0, k = 0;
while (i < n1 && j < n2 && k < n3) {
if (A1[i] == A2[j] && A2[j] == A3[k]) {
cout << A1[i] << " "; i++; j++; k++;
}
else if (A1[i] < A2[j])
i++;
else if (A2[j] < A3[k])
j++;
else
k++;
}
}
int main() {
int A1[] = {10, 12, 15, 20, 25};
int n1 = sizeof(A1)/sizeof(A1[0]);
int A2[] = {10, 12, 13, 15};
int n2 = sizeof(A2)/sizeof(A2[0]);
int A3[] = {10, 12, 15, 24, 25, 26};
int n3 = sizeof(A3)/sizeof(A3[0]);
cout << "Common elements are: ";
findCommonValues(A1, A2, A3, n1, n2, n3);
}输出
Common elements are: 10 12 15
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP