题目背景
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
示例 1:
输入: [1,2,3,1] 输出: true 示例 2:
输入: [1,2,3,4] 输出: false 示例 3:
输入: [1,1,1,3,3,4,3,2,4,2] 输出: true
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/contains-duplicate
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n = nums.size();
for(int i=0;i<n-1;i++){
if(nums[i] == nums[i+1])
return true;
}
return false;
}
};
第二遍做时原本想用哈希做,将出现的值归为数组中,结果忘记有负值
错误解法:
//错误解法
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
int number[1000]={0};
for(auto i:nums){
number[i]++;
if(number[i]>1)
return true;
}
return false;
}
};
哈希正确解法:
unordered_set<int> s;
for(int x:nums){
if(s.count(x)){
return true;
}
s.insert(x);
}
return false;