陣列中未出現的最小正整數

砍柴人Ryan發表於2020-11-09

題目描述

給定一個無序陣列arr,找到陣列中未出現的最小正整數

例如arr = [-1, 2, 3, 4]。返回1

arr = [1, 2, 3, 4]。返回5

[要求]

時間複雜度為O(n)O(n),空間複雜度為O(1)O(1)

class Solution {
public:
    /**
     * return the min number
     * @param arr int整型vector the array
     * @return int整型
     */
    int minNumberdisappered(vector<int>& arr) {
        // write code here
        for(int i = 0; i<arr.size(); i++){
            if(arr[i] < arr.size()){
                swap(arr[i], arr[arr[i]-1]);
            }
        }
        for(int i=0; i<arr.size();i++){
            if(arr[i]!=i+1){
                return i+1;
            }
        }
        return arr.size()+1;
    }
};

 

相關文章