C++ 中排序数组中第 k 个缺失元素


在本教程中,我们将编写一个程序,找出给定排序数组中第 k 个缺失元素。

找到在给定无序数组中从最小值到最大值之间缺失的第 k 个数字。让我们看看解决问题的步骤。

  • 初始化排序数组。
  • 使用 k 初始化两个变量 difference 和 count。
  • 遍历数组。
    • 如果当前元素不等于下一个元素。
      • 找到这两个数字之间的差值。
      • 如果差值大于或等于 k,则返回当前元素加上 count。
      • 否则从 count 中减去差值。
  • 返回 -1。

示例

让我们看看代码。

 在线演示

#include <bits/stdc++.h>
using namespace std;
int findMissingNumber(int arr[], int k, int n) {
   int difference, count = k;
   for(int i = 0 ; i < n - 1; i++) {
      if ((arr[i] + 1) != arr[i + 1]) {
         difference = arr[i + 1] - arr[i] - 1;
         if (difference >= count) {
            return arr[i] + count;
         }else {
            count -= difference;
         }
      }
   }
   return -1;
}
int main() {
   int arr[] = { 1, 2, 3, 5, 10 }, n = 5;
   int k = 3;
   cout << findMissingNumber(arr, k, n) << endl;
   return 0;
}

输出

如果运行以上代码,则会得到以下结果。

7

结论

如果您在本教程中有任何疑问,请在评论区提出。

更新于: 2021年4月9日

234 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告