题目:给你一个整数数组 nums
。如果任一值在数组中出现 至少两次 ,返回 true
;如果数组中每个元素互不相同,返回 false
。
python解法
class Solution(object):
def containsDuplicate(self, nums):
return True if len(set(nums))!=len(nums) else False
解析:set()函数特殊功能,自动剔除数组中的重复数据。将处理前后的数据长度对比,即可知道数组中是否含有重复数据。
C++解法
1.排序法
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(v.begin(),v.end(),cmp),它是用来对一组序列进行排序的。 其有三个参数,前两个参数是待排序区间;第三个参数可有可无(第三个参数代表比较规则),没有第三个参数的时候,sort()默认按升序排列,有第三个参数的时候,可以通过这个参数实现各种各样的排序,包括降序。sort()函数功能强大就是强大在第三个参数。
将排好序的数据,相邻的两两对比,有重复的必然相邻。
2.哈希表
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;
}
};
解析:将每一个数据依次存入哈希表,如果插入一个元素时发现该元素已经存在于哈希表中,则说明存在重复的元素。