前不久学习了C++中的map用法,在这里得到了运用。
题目:给你一个整数数组 nums
。如果任一值在数组中出现 至少两次 ,返回 true
;如果数组中每个元素互不相同,返回 false
。
示例1:
输入:nums = [1,2,3,1]
输出:true
示例2:
输入:nums = [1,2,3,4]
输出:false
方法一:运用哈希表
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
int length = nums.size();
std::map<int,int> hash;
std::map<int,int>::iterator it;
for(int i=0;i<length;i++){
it = hash.find(nums[i]);
if(it != hash.end()){
return true;
}
else{
hash.insert(std::pair<int,int>(nums[i],i));
}
}
return false;
}
};
后来看题解得知,先对数组排序,然后比较相邻元素是否相当即可判断数组中有无重复元素
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size()-1;i++){
if(nums[i] == nums[i+1]){
return true;
}
}
return false;
}
};