#include <iostream>
using namespace std;
// 函数用于找到给定数组中的最小正整数
int findMin(int b[], int n) {
// 创建一个大小为 n+1 的数组来标记数字的出现情况
int a[n + 1];
// 初始化数组 a 中的元素为 0
for (int i = 0; i <= n; i++)
a[i] = 0;
// 遍历输入数组 b
for (int i = 0; i < n; i++) {
int m = b[i];
// 检查元素是否在有效范围内
if (m > 0 && m <= n)
// 标记数字 m 的出现
a[m] = 1;
}
// 遍历标记数组 a,查找第一个未标记的正整数
for (int i = 1; i <= n; i++) {
if (a[i] == 0)
return i;
}
// 如果数组中没有缺失的正整数,返回 n+1
return n + 1;
}
int main() {
int arr[] = {-5, 3, 2, 3};
int n = sizeof(arr) / sizeof(arr[0]);
int result = findMin(arr, n);
// 输出找到的最小正整数
cout << "缺失的最小正整数是:" << result << endl;
return 0;
}
哈希数组解决一类问题
最新推荐文章于 2024-07-15 22:53:16 发布