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

結論

如果您在本教程中有任何疑問,請在評論區提出。

更新於:2021年4月9日

140 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告