找到数组中未出现的最小整数

来源:互联网 发布:阴囊湿疹知乎 编辑:程序博客网 时间:2024/04/29 03:55

题目描述:

给定一个无序整型数组arr,找到数组中未出现的最小整数
例子

arr=[-1,2,3,4] return 1
arr=[1,2,3,4] return 5

时间复杂度O(n) 空间复杂度O(1)


实现函数

int missNum(vector<int> nums){    int l = 0; // 1-l 已经有    int r = nums.size(); // l+1-r想要有    while (l < r)    {        if (nums[l] == l + 1)        {            l++;        }        // nums[l] 减去 1 表示数nums[l] 应该在的位置        else if (nums[l] < l + 1 || nums[l] > r || nums[nums[l] - 1] == nums[l])        {            r--;            nums[l] = nums[r];        }        else{            swap(nums[l], nums[nums[l] - 1]);        }    }    return l + 1;}
0 0
原创粉丝点击