缺失的第一个正整数

Hashmap好东西啊

  public int minNumberDisappeared (int[] nums) {
        // write code here
        if(nums==null||nums.length==0){
            return -1;
        }
        HashMap<Integer,Integer> hashmap = new HashMap<Integer,Integer>();
        for(int i=0;i<nums.length;i++){
            hashmap.put(nums[i],1);
        }
          
        for(int i=1;i<=nums.length;i++){
            if(!hashmap.containsKey(i)){
              return i;
          }
        }
        return nums.length+1;
    }


第二种做法,

思路就是遍历先把<=0的数标记成n+1,之后在遍历如果nums[i]为正数,就把它在数组中的位置也就是nums[nums[i]-1]这个位置的数标记为负数。标记完成之后,在进行遍历,如果仍有位置为正数证明标记时没有数字对应这个位置。返回i+1即可。 最后返回nums.length+1即可.

public int minNumberDisappeared (int[] nums) {
        // write code here

        for (int i=0;i<nums.length;i++){
            if(nums[i]<=0){
                nums[i]=nums.length+1;
            }
        }

        for (int i=0;i<nums.length;i++){
            int n=Math.abs(nums[i]);
            if(n>0&&n<=nums.length){
                nums[nums[i]-1]=Math.abs(nums[nums[i]-1])*(-1);
            }
        }

        for (int i=0;i<nums.length;i++){
            if(nums[i]>0){
                return i+1;
            }
        }
        return nums.length+1;
    }

全部评论

相关推荐

LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
10-13 16:58
门头沟学院 Java
面了100年面试不知...:一周七天,一天去一家上班😍😍😍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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