移除自然數中某些整數後的第 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
結論
如果您對本教程有任何疑問,請在評論部分中提出。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP