LeetCode 217存在重复元素Easy
-
题目简述:给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回
true
。如果数组中每个元素都不相同,则返回false
。 -
输入:[1,2,3,1] 输出:true
输入:[1,2,3,4] 输出:false
-
思路:哈希表存储遍历到的每个数组元素并记录其出现次数
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_map<int, int> hash;
for(auto x : nums)
{
hash[x]++;
if(hash[x] > 1) return true;
}
return false;
}
};
- 思路二:利用set特性,不允许有相同键值
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
set<int> Set(nums.begin(),nums.end());
return Set.size()!=nums.size();
}
};
- 思路三:在原数组基础上排序然后比较相邻元素是否相同
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
if(nums.empty()) return false;
sort(nums.begin(),nums.end());
for(int i = 0; i + 1< nums.size(); i++)
{
if(nums[i] == nums[i + 1])
return true;
}
return false;
}
};
新的刷题顺序参考:Leetcode题解