Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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

  • x> z 및 y> z일 때 z는 공통 요소가 될 수 없으므로 A3으로 이동합니다.

예시

#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