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.
Example 1:
Input: [1,2,3,1]
Output: true
Example 2:
Input: [1,2,3,4]
Output: false
Example 3:
Input: [1,1,1,3,3,4,3,2,4,2]
Output: true
方法1: hash
思路:
在hash的过程中如果发现累计达到2的数字,return true,否则循环结束return false
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_map<int, int> hash;
for (int num: nums){
++hash[num];
if (hash[num] >= 2){
return true;
// if (hash.count(num)){
// return true;
}
}
}
return false;
}
};
方法2: sort
稍微快一点,排序后比较有无相邻相等的数字
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
for (int i = 1; i< nums.size(); i++){
if (nums[i] == nums[i - 1]){
return true;
}
}
return false;
}
};