题目:
判断是否有重复值存在
以下有5种解法,依次优化
s1
#include <iostream>
#include <unordered_map>
using namespace std;
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
bool isCD = false;
unordered_map<int,int> um;
for(int i : nums)
um[i]++;
for(int i = 0; i < nums.size(); i++){
if(um[nums[i]] >= 2){
isCD = true;
break;
}
}
return isCD;
}
};
int main() {
int a[2] = {3,3};
vector<int> nums(a,a+2);
Solution s;
cout << s.containsDuplicate(nums) << endl;
system("pause");
return 0;
}
s2#include <iostream>
#include <unordered_set>
using namespace std;
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> us;
for(int i : nums)
us.insert(i);
return nums.size() > us.size();
}
};
int main() {
int a[2] = {3,3};
vector<int> nums(a,a+2);
Solution s;
cout << s.containsDuplicate(nums) << endl;
system("pause");
return 0;
}s3
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_map<int,int> um;
for(int i = 0; i < nums.size(); i++){
um[nums[i]]++;
if(um[nums[i]] > 1) return true;
}
return false;
}
};s4
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> us;
for(int i = 0; i < nums.size();i++){
us.insert(nums[i]);
if(us.size() < i+1) return true;
}
return false;
}
};
本文介绍五种不同的算法来检测整数数组中是否存在重复元素,并比较它们的效率。这些方法利用了C++标准库中的unordered_map和unordered_set,通过遍历数组并检查每个元素的出现次数来实现。每种方法都有其特点,有的注重空间优化,有的则侧重于减少时间复杂度。
139

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



