思路:
104ms,时间复杂度:O(N),空间复杂度:O(N)
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
set<int> s;
for(int num: nums) {
if(s.find(num) != s.end()) return true;
s.insert(num);
}
return false;
}
};
DISCUSS,追求简洁,使用一行的方法:52ms
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
return nums.size() > set<int>(nums.begin(), nums.end()).size();
}
};
使用二行的方法:40ms
时间复杂度:O(NlogN),空间复杂度:O(1)
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
return unique(nums.begin(), nums.end()) != nums.end();
}
};
检测重复元素技巧
本文介绍三种检测数组中是否存在重复元素的有效方法:使用集合查找、利用集合大小比较及排序结合唯一化处理。每种方法附带时间与空间复杂度分析。
284

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



