Description
Given an integer array nums
, return true
if any value appears at least twice in the array, and return false
if every element is distinct.
Example 1:
Input: nums = [1,2,3,1] Output: true
Example 2:
Input: nums = [1,2,3,4] Output: false
Example 3:
Input: nums = [1,1,1,3,3,4,3,2,4,2] Output: true
Constraints:
1 <= nums.length <= 105
-109 <= nums[i] <= 109
Code
std::set is typically implemented as a binary search tree(RB tree in GCC 4.8). It costs O(nlogn) to construct. While std::unordered_set uses hash table, O(n) is expected. That's why @oynasun observes unordered_set is faster.
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
set<int> s;
for(auto n: nums) {
if(s.count(n) > 0)
return true;
s.insert(n);
}
return false;
}
};