每日算法练习
题目:给你一个整数数组 nums
。如果任一值在数组中出现 至少两次 ,返回 true
;如果数组中每个元素互不相同,返回 false
。
解题思路:
①利用排序
class Solution {
public:
bool containsDuplicate(vector<int>& nums) { /*因为返回值只是TRUE和FALSE,所以建立布尔型常量既可*/
sort(nums.begin(),nums.end()); //sort函数进行排序(默认为升序)
int n=nums.size();
for(int i=0;i<n-1;i++)
{
if(nums[i]==nums[i+1])
{
return true; //数据在循环中两两比较,若有相同返回TRUE
}
}
return false;
}
};
②利用哈希
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> s; //定义哈希容器s
for(int x:nums){ //遍历并赋值给x
if(s.find(x) !=s.end()) /*判断x是不是等于表的尾位,若不是证明已经有重复位了,返回
TRUE*/
{
return true;//存在重复元素
}
s.insert(x); //插入元素x
}
return false;
}
};