目录
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;
}
};
每天都要开开心心呀!
本文介绍了两种寻找数组中重复元素的方法。首先,通过万能for循环法展示了基本思路,但这种方法在大数据量下会导致超时。接着,引入了Hash映射,利用其查找效率高的特性,实现了一个O(n)时间复杂度的解决方案,大大提高了性能。文章强调了算法优化在编程中的重要性,并鼓励每天保持学习的热情。
1153

被折叠的 条评论
为什么被折叠?



