Lintcode 丢失的第一个正整数

来源:互联网 发布:中信淘宝信用卡权益 编辑:程序博客网 时间:2024/06/01 08:47

思路: 桶排序,每一个数放在该放的位置,1放在第1个位置,2放在第2个位置,n放在第n个位置
注意!!!坐标从0开始, 5放在下标为4 个位置,i放在下标为i-1 的位置。

class Solution {public:    /**         * @param A: a vector of integers     * @return: an integer     */    int firstMissingPositive(vector<int> A) {        // write your code here        int len=A.size();        for(int i=0;i<len;){            if(A[i]==i+1)                i++;            else if(A[i]>=1&&A[i]<=len&&A[A[i]-1]!=A[i])                    swap(A[i],A[A[i]-1]);                 else                    i++;        }        for(int j=0;j<len;j++){            if(A[j]!=j+1)            return j+1;        }        return len+1;    }};