class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int minNumberDisappeared(vector<int>& nums) {
        // write code here
        int n = nums.size();
        int ans = n + 1;
        // 因为最后结果不是在1-n之间,就是n+1
        // 所以将小于等于0的数赋值为n+1
        for(int i = 0; i < n; i++) {
            if(nums[i] <= 0)
                nums[i] = n + 1;
        }
        // 然后统计数值小于n的nums元素,将其相应的位置上的元素变为相反数
        for(int i = 0; i < n; i++) {
            int x = abs(nums[i]);
            if(x <= n)
                nums[x - 1] = -1 * abs(nums[x - 1]);
        }
        // 遍历nums,如果有大于0的元素,即为不存在的元素
        for(int i = 0; i < n; i++) {
            if(nums[i] > 0) {
                ans = i + 1;
                break;
            }
        }
        return ans;
    }
};