美文网首页
数组-Leetcode_42-缺失的第一个正数

数组-Leetcode_42-缺失的第一个正数

作者: qluojieq | 来源:发表于2019-06-24 22:47 被阅读0次

    题目链接:缺失的第一个正数

    解法,

    1、遍历数组,将数组归位,如下标为0,存放1,下标1,存放2,依此类推

    2、从准备的数据中找到第一个缺失的数,

    时间复杂度O(n^2 ) ,空间复杂度O(1);

    显然这个不符合题目要求,不管怎么样,先做出了一个解;

    代码如下:


    public int firstMissingPositive(int[] nums) {

            int n = nums.length;

            // 准备数据

            for(int i = 0; i < n ; i++){

                for(int j = i;j < n ; j++){

                    if(nums[j] == i+1){

                        int temp = nums[i];

                        nums[i] = i+1;

                        nums[j] = temp;

                    }

                }

            }

            // 查找第一个非 1数字

            for(int i = 0;i < n; i++){

                if(i==n-1&&nums[i]==i+1){

                    return i+2;

                }

                if(nums[i]!= i+1){

                    return i+1;

                }

            }

            return 1;

        }


    相关文章

      网友评论

          本文标题:数组-Leetcode_42-缺失的第一个正数

          本文链接:https://www.haomeiwen.com/subject/omwaqctx.html