[leetcode刷题系列]First Missing Positive

来源:互联网 发布:淘宝店铺无法订购花呗 编辑:程序博客网 时间:2024/06/15 21:50

好吧,智商是硬伤。 我承认题目要求的O(n)复杂度和常量空间,我没想到算法。于是就Google了下。

这种思路确实第一次见。长见识了。


class Solution {public:    int firstMissingPositive(int A[], int n) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        for(int i = 0; i < n; ++ i){            int now = i;            while(now >= 0 && now < n){                if(A[now] - 1 == now)                    break;                int target = A[now] - 1;                if(target < 0 || target >= n || A[now] == A[target])                    break;                swap(A[target], A[now]);            }        }        for(int i = 0; i < n; ++ i)            if(A[i] != i + 1)                return i + 1;        return n + 1;    }};


原创粉丝点击