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 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告