给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
我的方法:
bool containsDuplicate(vector<int>& nums) { if (nums.empty()|| nums.size() == 1) return false; // bool ret = false; std::sort(nums.begin(), nums.end()); for(int i=0 ; i<nums.size()-1 ; ++i) { if(nums[i] == nums[i+1]) return true; } return false; }
更进一步的使用库函数:
bool containsDuplicate(vector<int>& nums) { if (nums.empty() || nums.size() == 1) return false; std::sort(nums.begin(), nums.end()); auto newEnd = std::unique(nums.begin(), nums.end()); if (newEnd != nums.end()) { return true; } else { return false; } }
大神解法:
另一种使用库函数的方式,利用set或unordered_set的初始化。
bool containsDuplicate(vector<int>& nums) { unordered_set<int> s(nums.cbegin(), nums.cend()); return nums.size() != s.size(); }
unordered_set可以改为set