文章

79

粉丝

0

获赞

0

访问

3.6k

头像
2018年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年9月19日 21:23
阅读数 105

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;
}
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发