刷题计划第2道 ----2.存在重复元素
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false.
思路
法一:python 转换为set ,再转为 list1 如果 list1 不与list等长,则存在重复元素
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
return len(list(set(nums))) != len(nums)
法二:先排序,再遍历
用c++ sort 库里的排序
sort(nums.begin(), nums.end());
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;
}
};
法三:哈希表 hash
对于数组中每个元素,我们将它插入到哈希表中。如果插入一个元素时发现该元素已经存在于哈希表中,则说明存在重复的元素。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> s;
for (int x: nums) {
if (s.find(x) != s.end()) {
return true;
}
s.insert(x);
}
return false;
}
};