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

C++에서 첫 번째 배열에는 있지만 두 번째에는 없는 요소 수 계산

<시간/>

정수 요소를 포함하는 모든 크기의 배열이 주어지고 첫 번째 배열에는 있지만 두 번째 배열에는 없는 요소의 수를 계산하는 작업이 수행됩니다.

배열은 같은 유형의 요소에 대한 고정 크기 순차 컬렉션을 저장할 수 있는 일종의 데이터 구조입니다. 배열은 데이터 모음을 저장하는 데 사용되지만 종종 배열을 같은 유형의 변수 모음으로 생각하는 것이 더 유용합니다.

예를 들어

Input− int arr_1[] = {1, 2, 3, 4}
      Int arr_2[] = {1, 5, 6, 7, 8}
Output − count is 3

설명 - 주어진 arr_1에는 요소 1, 2, 3, 4가 있고 arr_2에는 1, 5, 6,7, 8이 있습니다. 요소 1은 두 배열에 모두 존재하므로 계산하지 않을 것이므로 개수는 3이 됩니다.

Input − int arr_1[] = {10, 20, 30, 40, 50}
      Int arr_2[] = {10, 20, 30, 60}
Output − count is 2

설명 − 주어진 arr_1에는 요소 10, 20, 30, 40, 50이 있고 arr_2에는 10, 20, 30 및 60이 있습니다. 요소 10, 20 및 30은 두 배열에 모두 있으므로 계산하지 않습니다. 따라서 개수는 2가 됩니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • arr_1[] 및 arr_2[]

    라는 두 개의 배열을 만듭니다.
  • 배열의 요소에 따라 정수 값을 반환하는 length() 함수를 사용하여 두 배열의 길이를 계산합니다.

  • 첫 번째 배열에만 있는 요소 수를 저장할 임시 변수를 사용합니다.

  • 순서 없는 지도 만들기

  • i가 arr_1의 크기보다 작을 때까지 루프를 시작합니다.

  • 1로 증가[arr_1[i]]

  • i가 arr_2의 크기보다 작을 때까지 i에서 0으로 다른 루프를 시작합니다.

  • 루프 내에서 up.find(arr_2[i])!=up.end() 및 up[arr_2[i]]!=0

    인지 확인합니다.
  • 위로[arr_2[i]] 1 감소

  • i가 arr_1의 크기보다 작아질 때까지 i에서 0으로 다른 루프를 시작합니다.

  • 루프 내에서 up[arr_1[i]!=0

    인지 확인합니다.
  • 그런 다음 카운트를 1 증가시키고 [arr_1[i]] =0

    으로 설정합니다.
  • 개수 반환

  • 결과를 인쇄하십시오.

예시

#include <iostream>
#include<unordered_map>
using namespace std;
int elements_count(int arr_1[], int arr_2[], int m, int n){
   bool f = false;
   int result = 0;
   // map to store frequency of elements present in a
   unordered_map<int, int> up;
   for (int i = 0; i < m; i++){
      up[arr_1[i]]++;
   }
   // check if the elements of b
   // is present in b or not
   for (int i = 0; i < n; i++)
   if (up.find(arr_2[i]) != up.end() && up[arr_2[i]] != 0){
      up[arr_2[i]]--;
   }
   // count the elements of a whose
   // frequency is more than b
   for (int i = 0; i < m; i++) {
      if (up[arr_1[i]] != 0){
         result++;
         up[arr_1[i]] = 0;
      }
   }
   return result;
}
// Main function
int main(){
   int arr_1[] = { 2, 4, 4, 6, 6, 6, 8, 9 };
   int arr_2[] = { 2, 2, 4, 6, 6 };
   int m = sizeof(arr_1)/sizeof(arr_1[0]);
   int n = sizeof(arr_2)/sizeof(arr_2[0]);
   cout <<"count is "<<elements_count(arr_1, arr_2, m, n);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

count is 4