文章
79
粉丝
0
获赞
0
访问
3.6k
1)使用哈希表进行存储,将数组遍历一次,把相应的元素作为key存放到哈希表里,然后相应位置的值+1,例如创建数组hash_min[], 数组{-5, 3, 2, 3},可以将大于0的元素,例如3,放进hash_min[3]++。接着遍历hash_min,找到第一个为0的key,那个就是最小未出现正整数。
2) 见下代码
3)O(n)时间复杂度, O(n)空间复杂度
#define MAXINT 2147485555 // 假设为int最大值
int findSmallest(int nums[], int size){
int res = 0;
int hash_min[MAXINT];
for(int i = 0; i< size; ++i){
if(nums[i] >= 0) hash_min[nums[i]]++;
}
for(int i = 0; i < MAXINT; ++i){
if(hash_min[i] == 0){
res = i+1;
break;
}else res++;
}
return res+1;
}
登录后发布评论
暂无评论,来抢沙发