给你一个整数数组 nums
。如果任一值在数组中出现 至少两次 ,返回 true
;如果数组中每个元素互不相同,返回 false
。
(python)将列表转换成集合,然后判断是否长度一样
class Solution:
def containsDuplicate(self,nums):
return len(set(nums)) != len(nums)
注意:函数的格式有个self
(C++)set 集合不包含重复元素;数组nums里面存在重复元素时所以set.size()!=nums.size()
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
set<int> Set;
for(int x:nums){
Set.insert(x);
}
if(Set.size()!=nums.size()){
return true;
}
return false;
}
};
(C++)在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。
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;
}
};
注意:sort ()函数是C++中的排序函数其头文件为: #include<algorithm>头文件;qsort ()是C中的排序函数,其头文件为: #include<stdlib.h>
(C++)哈希表,对于数组中每个元素,我们将它插入到哈希表中。如果插入一个元素时发现该元素已经存在于哈希表中,则说明存在重复的元素。
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;
}
};