C++中无序数组中第k个缺失元素
在本教程中,我们将编写一个程序来找出给定无序数组中第k个缺失元素。
在给定的无序数组中,找到从最小值到最大值之间缺失的第k个数字。让我们看看解决这个问题的步骤。
- 初始化无序数组。
- 将所有元素插入集合。
- 从数组中找到最大和最小元素。
- 编写一个循环,从最小值迭代到最大值,并维护一个计数变量。
- 如果集合中存在当前元素,则递增计数。
- 如果计数等于k,则返回i。
示例
让我们看看代码。
#include <bits/stdc++.h>
using namespace std;
int findMissingNumber(int arr[], int n, int k) {
unordered_set<int> numbers;
int count = 0;
for (int i = 0; i < n; i++) {
numbers.insert(arr[i]);
}
int max = *max_element(arr, arr + n);
int min = *min_element(arr, arr + n);
for (int i = min + 1; i < max; i++) {
if (numbers.find(i) == numbers.end()) {
count++;
}
if (count == k) {
return i;
}
}
return -1;
}
int main() {
int arr[] = { 1, 10, 3, 2, 5 }, n = 5;
int k = 3;
cout << findMissingNumber(arr, n, k) << endl;
return 0;
}输出
如果运行以上代码,您将得到以下结果。
7
结论
如果您在本教程中有任何疑问,请在评论区提出。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP