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

C++의 정렬되지 않은 배열에서 k번째 누락된 요소

<시간/>

이 튜토리얼에서는 주어진 정렬되지 않은 배열에서 k번째 누락된 요소를 찾는 프로그램을 작성할 것입니다.

k번째 찾기 지정된 정렬되지 않은 배열에서 최소값에서 최대값까지 누락된 숫자입니다. 문제를 해결하는 단계를 살펴보겠습니다.

  • 정렬되지 않은 배열을 초기화합니다.
  • 모든 요소를 ​​집합에 삽입합니다.
  • 배열에서 최대 및 최소 요소를 찾습니다.
  • 최소에서 최대로 반복하는 루프를 작성하고 개수에 대한 변수를 유지합니다.
    • 현재 요소가 집합에 있으면 개수를 늘립니다.
    • 카운트가 k와 같으면 i를 반환합니다.

예시

코드를 봅시다.

#include <bits/stdc++.h>
using namespace std;
int findMissingNumber(int arr[], int n, int k) {
   unordered_set<int> numbers;
   int count = 0;
   for (int i = 0; i < n; i++) {
      numbers.insert(arr[i]);
   }
   int max = *max_element(arr, arr + n);
   int min = *min_element(arr, arr + n);
   for (int i = min + 1; i < max; i++) {
      if (numbers.find(i) == numbers.end()) {
         count++;
      }
      if (count == k) {
         return i;
      }
   }
   return -1;
}
int main() {
   int arr[] = { 1, 10, 3, 2, 5 }, n = 5;
   int k = 3;
   cout << findMissingNumber(arr, n, k) << endl;
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

7

결론

튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.