Computer >> Máy Tính >  >> Lập trình >> C ++

phần tử bị thiếu thứ k trong một mảng không được sắp xếp trong C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình để tìm ra phần tử bị thiếu thứ k trong mảng chưa được sắp xếp đã cho.

Tìm k-th số bị thiếu từ tối thiểu đến tối đa trong mảng chưa được sắp xếp đã cho. Hãy xem các bước để giải quyết vấn đề.

  • Khởi tạo mảng chưa được sắp xếp.
  • Chèn tất cả các phần tử vào một tập hợp.
  • Tìm các phần tử tối đa và tối thiểu từ mảng.
  • Viết một vòng lặp lặp từ tối thiểu đến tối đa và duy trì một biến cho số lượng.
    • Nếu phần tử hiện tại có trong tập hợp, thì hãy tăng số lượng.
    • Nếu số đếm bằng k, thì trả về i.

Ví dụ

Hãy xem mã.

#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;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

7

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.