最小整数

  1. 设数组长度为n,当缺失的最小整数最大的情况下,一定是n+1,数组0-n数组随机排列。
  2. 当有不在1-n之间的数字时,不考虑这些超出范围的数字,它们哈希与否都不影响得到缺失的最小整数。缺失的整数范围是1-n+1。同时,防止数组哈希时候越界。
class Solution {
public:
    int minNumberdisappered(vector<int>& arr) {
        int n = arr.size();
        for(int i = 0; i < n; i++) {
            while(arr[i] > 0 && arr[i] <= n && i + 1 != arr[i]) {
                swap(arr[arr[i]-1], arr[i]);
            }
        }
        for(int i = 0; i < n; i++) {
            if(arr[i] != i+1) return i+1;
        }
        return n+1;
    }
};