class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
     // 先使用 哈希来坐下 这时当然空间复杂度还没达到进阶要求
     // 不适用额外空间
     // 官解 原地哈希
    int minNumberDisappeared(vector<int>& nums) {
        // write code here

        int n = nums.size();

        for(int i=0; i<n; ++i)
        {
            if(nums[i]<=0) // 菲正数 标记为n+1
                nums[i] = n+1; //n+1
        }

        // 因为要么缺少n+1 要么缺少[1,n]的数字
        for(int i=0; i<n; ++i)
        {
            if(abs(nums[i])<=n) // 使用绝对值是因为之前它的值可能被改为负数
            {
                // 此数字对应的下标
                nums[abs(nums[i])-1] = -1 * abs(nums[abs(nums[i])-1]);
            }
        }
        int ans = n+1; // 初始答案
        for(int i=0; i<n; ++i)
        {
            if(nums[i]>0)
            {
                ans = i+1; // 一旦遇到此下表 上没见过 那就返回  否则就是n+1
                break;
            }

        }

        return ans;


    }
};

所谓原地哈希 自己来标记