Leetcode: First Missing Positive

来源:互联网 发布:改图宝软件下载 编辑:程序博客网 时间:2024/06/06 02:58

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.

这个要注意0的位置,所以加个偏移。绕了半天,晕乎乎的。

class Solution {public:    int firstMissingPositive(int A[], int n) {        for (int i = 0; i < n; ++i) {            while (A[i] != i+1 && A[i] > 0 && A[i] <= n && A[i] != A[A[i]-1]) {                swap(A, i, A[i]-1);            }        }                for (int i = 0; i < n; ++i) {            if (A[i] != i + 1) {                return (i + 1);            }        }                return (n + 1);    }        void swap(int A[], int i, int j) {        int tmp = A[i];        A[i] = A[j];        A[j] = tmp;    }};

0 0