目录
1. 万能for循环法(超时了)
时间复杂度O(n^2)
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
int a,b;
int c;
for(a=0;a<nums.size();a++)
{
for(b=a+1;b<nums.size();b++)
{
if(nums[a]==nums[b])
{
c=nums[a];
}
}
}
return c;
}
};
目录
2. Hash
昨天的第一题中用到了Hash,其中将数组的值作为key,角标作为value,举一反三一下。
find函数可以查找map中是否有相同的key。将数组的值作为key,利用find函数,如果这个数第一次出现,则将这个数添加进map,如果不是第一次出现,则返回这个值。
时间复杂度O(n)。
代码如下:
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
map<int,int> hashmap;
int a,b;
for(a=0;a<nums.size();a++)
{
if(hashmap.find(nums[a])==hashmap.end())//判断这个数是不是第一次出现
{
hashmap.insert({nums[a],a});
}
else
{
b=nums[a];
return b;
}
}
return 0;
}
};
每天都要开开心心呀!