移除自然数中某些整数后的第 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
结论
如果您对本教程有任何疑问,请在评论部分中提出。
广告