6.4 First Missing Positive --- 图解

    技术2022-07-11  94

    /********************************************************************************************************** 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

    本质上是桶排序 (bucket sort),每当 A[i]!= i+1 的时候,将 A[i] 与 A[A[i]-1] 交换,直到无法 交换为止,终止条件是 A[i]== A[A[i]-1]。 **********************************************************************************************************/

    class Solution{ public:     int firstMissingPositive(int A[],int n){         bucker_sort(A, n);         for(int i = 0;i < n; i++){             if(A[i] != (i + 1))                 return i + 1;             return n + 1;         }     } private:     static void bucket_sort(int A[], int n){         for(int i = 0; i < n; i++){             while(A[i] != i + 1){                 if(A[i] <=0 || A[i] > n || A[i] == A[A[i] - 1])                     break;                 swap(A[i], A[A[i] - 1]);             }         }     } };

     

     

    参考资料:

    Leetcode题解

    Processed: 0.020, SQL: 9