题解 | #缺失的第一个正整数#

缺失的第一个正整数

http://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5

时间复杂度O(n),空间复杂度O(n)的做法:开辟一个新的数组arr,长度为nums.length+1,遍历nums数组,如果非负且值小于nums的长度,则把arr[nums[i]]置1。然后遍历辅助数组,找到下标不为1的第一个元素即可。

public class Solution {
    public int minNumberDisappeared (int[] nums) {
        int []arr = new int [nums.length+1];
        for(int i=0;i<nums.length;++i){
            if(nums[i]<=nums.length&&nums[i]>0){
                arr[nums[i]] =1;
            }
        }
        for(int i=1;i<arr.length;++i)
            if(arr[i]==0)return i;
      return arr.length;
    }
}
全部评论
将 新的数组arr 换成boolean数组性能会更好一点
点赞 回复 分享
发布于 2022-03-10 14:27

相关推荐

06-07 19:59
门头沟学院 C++
补药卡我啊😭:都快15年前的了还在11新特性
你的简历改到第几版了
点赞 评论 收藏
分享
评论
5
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务