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

2019-06-24  本文已影响0人  qluojieq

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

解法,

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;

    }


上一篇 下一篇

猜你喜欢

热点阅读