刷题——缺失的第一个正整数
缺失的第一个正整数_牛客题霸_牛客网
我选择了一个我比较能看懂的,
int minNumberDisappeared(vector<int>& nums) {// write code heremap<int, int>hash;int n = nums.size();//哈希表记录数组中出现的每个数字for(int i = 0; i < n; i++)hash[nums[i]]++;int res = 1;//从1开始找到哈希表中第一个没有出现的正整数while(hash.find(res) != hash.end())res++;return res;}
利用数组的长度,对应值和下标的对应关系
int minNumberDisappeared(vector<int>& nums) {// write code hereint n = nums.size();for (int i = 0; i < n; ++i) {while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {swap(nums[nums[i] - 1], nums[i]);}}for (int i = 0; i < n; ++i) {if (nums[i] != i + 1) {return i + 1;}}return n + 1;}