#include <stdio.h>
#include<iostream>
int func(int A[], int n)
{
int k = 0;
int* B = new int[n];//动态申请B数组
for (int i = 0; i < n; i++)//初始化B数组
B[i] = 0;
for (int j = 0; j < n; j++)
if (A[j] > 0 && A[j] < n)//A中元素比值比数组长度还要大的话,就没必要存储到B中了
B[A[j] - 1] = 1;//把A的元素值当索引存B数组中
for(; k < n; k++)
if(B[k] == 0)
break;//寻找B中为0的元素,对应的索引+1即未出现的最小正数
return k;
}
int main()
{
int A[] = { -1,1,0,2,3,4,5,10};
int a = func(A, 8);
printf("%d ", a);
return 0;
}
设计一个时间上尽可能高效的算法,找出数组未出现的最小正数
最新推荐文章于 2024-11-12 21:59:57 发布