First Missing Positive

来源:互联网 发布:数据透视表又叫做什么 编辑:程序博客网 时间:2024/05/29 19:37

Given an unsorted integer array, find the first missing positive integer.

For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.

Your algorithm should run in O(n) time and uses constant space.

思路: 这个题的意思是找到 第一个 在数组中本应该出现但没出现的正数。 我们在遍历数组的时候, 把每个不在正QUE 位置上的 数字都换到正QUE位置上, 然后遍历整个数组, 找到第一个 A[i] != i + 1 的数字。

易错点: 在数字交换时候, 由于 A[ i ] 是作为下标出现, 因此 后面再替换时候 ,一定要用 temp  值。

public class Solution {    public int firstMissingPositive(int[] A) {        int len = A.length;        if(len < 1)            return 1;        for(int i = 0; i < A.length; i++){            while(A[i] > 0 && A[i] <= len && A[i] != i + 1 && A[A[i] - 1] != A[i]){                int temp = A[i];//----                A[i] = A[temp - 1];                A[temp - 1] = temp;            }        }                for(int i = 0; i < len; i++){            if(A[i] != i + 1)                return i + 1;        }        return len + 1;    }}


0 0