方法一:
sort排序,再遍历
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
if(nums.size()<2)
return false;
for(int i=1;i<nums.size();++i){
if(nums[i-1]==nums[i])
return true;
}
return false;
}
};
时间复杂度:O(N\log N)O(NlogN),其中 NN 为数组的长度。需要对数组进行排序。
空间复杂度:O(\log N)O(logN),其中 NN 为数组的长度。注意我们在这里应当考虑递归调用栈的深度。
方法二
使用set来判断是否存在相同元素
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
set<int> s;
for(int i:nums){
if(s.find(i)!=s.end())
return true;
s.insert(i);
}
return false;
}
};
时间复杂度:O(N)O(N),其中 NN 为数组的长度。
空间复杂度:O(N)O(N),其中 NN 为数组的长度。