思路分析:
这道题有两种解法。第一种解法是定义一个标记数组,如果遇到一个数字,就判断这个数字是否出现过,如果没有出现过就标记为1代表出现了一次。如果出现过就直接跳出循环输出即可,需要注意的是由于可能存在负数,所以要定义map。第二种解法是把所有数字排个序,判断相邻的两个数字是否相等即可。
代码实现1:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
int flag=0;
for(int i=0;i<nums.size()-1;i++)
if(nums[i]==nums[i+1])
{
flag=1;
break;
}
if(flag)return true;
else return false;
}
};
代码实现2:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
map<int,int>book;
int len=nums.size();
int flag=0;
for(int i=0;i<len;i++)
{
if(book[nums[i]]==0)
book[nums[i]]=1;
else if(book[nums[i]]==1)
{
flag=1;
break;
}
}
if(flag)return true;
else return false;
}
};