题目:Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
判断一个数组里是否存在至少一个数出现了至少2次。
思路是先排序,然后比较大小,经过排序后有相同的数肯定是在一块,所以比较相邻数字是否相等即可。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
int sz = nums.size();
sort(nums.begin(), nums.end());
for (int i = 0; i < sz-1; i++)
{
if (nums[i] == nums[i + 1])
return true;
}
return false;
}
};
搜索了一下网上的答案,发现还可以用map解
bool containsDuplicate(vector<int>& nums) {
map<int, int> int_map;
for (int i = 0; i<nums.size(); i++) {
if (int_map.count(nums[i])){
return true;
}
int_map.insert(pair<int, int>(nums[i], i));
}
return false;
}