移除自然数中某些整数后的第 k 小元素(用 C++ 实现)


在本教程中,我们将编写一个程序,以找出在从自然数中移除某些整数后得到的最小元素。

我们给出了一个元素数组和 k 值。从自然数中移除给定数组中存在的所有元素。然后从剩下的自然数中找出第 k 小的元素。

我们来看看解决此问题的步骤。

  • 初始化数组和 k。
  • 初始化一个数组,并用 0 初始化所有元素,但给定数组中存在的元素除外。
  • 编写一个循环,迭代到给定数组的大小。
    • 如果当前元素不存在于上述数组中,则减小 k 的值。
    • 当 k 变为零时返回当前值。
  • 返回 0。

示例

我们来看看代码。

 实时演示

#include <bits/stdc++.h>
#define MAX 1000000
using namespace std;
int smallestNumber(int arr[], int n, int k) {
   int flag[MAX];
   memset(flag, 0, sizeof flag);
   for (int i = 0; i < n; i++) {
      flag[arr[i]] = 1;
   }
   for (int i = 1; i < MAX; i++) {
      if (flag[i] != 1) {
         k--;
      }
      if (!k) {
         return i;
      }
   }
   return 0;
}
int main() {
   int k = 2;
   int arr[] = { 3, 5 };
   cout << smallestNumber(arr, 2, k) << endl;
   return 0;
}

输出

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

2

结论

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

更新于:09-04-2021

198 次浏览

开始您的 职业生涯

学习本课程并获得认证

开始
广告