题目要求
思路
想法一:使用set\map这种哈希结构来处理,优点是代码量少,缺点是空间复杂度、时间复杂度很高。
想法二:使用排序,之后遍历整个数组即可,最早没想到排序,其实如果是去除重复元素的话,排序是比较好用的方法。
代码
代码一: 使用哈希结构来解决。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
map<int,int> num;
map<int,int>::iterator iter;
for(int i=0;i<nums.size();i++){
iter = num.find(nums[i]);
if(iter != num.end())
return true;
num[nums[i]] = nums[i];
}
return false;
}
};
用时:
代码二: 使用排序来解决。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
int lastValue;
for(int i=0;i<nums.size();i++){
if(i==0){
lastValue = nums[0];
continue;
}
if(nums[i] == lastValue)
return true;
lastValue = nums[i];
}
return false;
}
};
用时:
参考链接:https://blog.youkuaiyun.com/SoulOH/article/details/81985040,真大佬代码量是真的少,而且效率不低。