企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 查找给定数组中缺少的前 k 个自然数 > 原文: [https://www.geeksforgeeks.org/find-first-k-natural-numbers-missing-given-array/](https://www.geeksforgeeks.org/find-first-k-natural-numbers-missing-given-array/) 给定大小为 n 且数字为 k 的数组,我们需要打印给定数组中不存在的前 k 个自然数。 **示例**: ``` Input : [2 3 4] k = 3 Output : [1 5 6] Input : [-2 -3 4] k = 2 Output : [1 2] ``` 1)对给定的数组进行排序。 2)排序后,我们找到数组中第一个正数的位置。 3)现在,我们遍历数组并将打印元素保持在两个连续的数组元素之间的间隙中。 4)如果空格不能覆盖 k 个缺失的数字,我们将打印大于最大数组元素的数字。 ## C++ ```cpp // C++ program to find missing k numbers // in an array. #include <bits/stdc++.h> using namespace std; // Prints first k natural numbers in // arr[0..n-1] void printKMissing(int arr[], int n, int k) {     sort(arr, arr + n);     // Find first positive number     int i = 0;     while (i < n && arr[i] <= 0)         i++;     // Now find missing numbers     // between array elements     int count = 0, curr = 1;     while (count < k && i < n) {         if (arr[i] != curr) {             cout << curr << " ";             count++;         }         else             i++;         curr++;     }     // Find missing numbers after     // maximum.     while (count < k) {         cout << curr << " ";         curr++;         count++;     } } // Driver code int main() {     int arr[] = { 2, 3, 4 };     int n = sizeof(arr) / sizeof(arr[0]);     int k = 3;     printKMissing(arr, n, k);     return 0; } ```