题目描述:
给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数
进阶: 空间复杂度 O(1),时间复杂度 O(n)
示例1
输入: [1,0,2]
返回值:3
示例2
输入:[-2,3,4,1,5]
返回值:2
示例3
输入:[4,5,6,8,9]
返回值:1
思路:
构建hashmap,将列表中所有值存放到hashmap中,然后进行[1,n]的循环遍历,一旦在hashmap中没有找到值,则输入该值,否则,最小正整数是n+1。
代码:
int minNumberDisappeared(vector<int>& nums) {
// write code here
map<int,int>hashmap;
for(int i=0;i<nums.size();i++)
{
if (hashmap.find(nums[i])==hashmap.end())//当hashmap中未找到key值
{
hashmap[nums[i]]=0;//数字填入哈希表中
}
}
for(int i=1;i<nums.size()+1;i++)
{
if (hashmap.find(i)==hashmap.end())
{
return i;
}
}
return nums.size()+1;
}