LeetCode 217. Contains Duplicate
最简单粗暴的思路,sort后比较当前数和后一个数是否相同。但是耗时,O(nlogn)
1 class Solution { 2 public: 3 bool containsDuplicate(vector<int>& nums) { 4 sort(nums.begin(), nums.end()); 5 int i = 0, size = nums.size(); 6 while(i < size - 1){ 7 if(nums[i] == nums[i + 1]) 8 return true; 9 ++i; 10 } 11 return false; 12 } 13 };
用set优化,放入一个数,如果已经在set中,那么return true
1 class Solution { 2 public: 3 bool containsDuplicate(vector<int>& nums) { 4 set<int> set_num; 5 for(int i = 0; i < nums.size(); ++i){ 6 if(!set_num.insert(nums[i]).second) return true; 7 } 8 return false; 9 } 10 };
然而set更慢了……
把set改为unordered_set会快一些,但是仍没有sort快。