题目:
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.
解析:
首先想到的是对容器元素排序后,若有相等的元素则必然相邻,可以利用sort和unique方法,unique将无重复的元素移动到序列前端,返回无重复序列的下一个位置的迭代器。
1 class Solution { 2 public: 3 bool containsDuplicate(vector<int>& nums) { //时间复杂度由于set 4 sort(nums.begin(),nums.end()); 5 return unique(nums.begin(),nums.end()) != nums.end(); 6 } 7 };
第二种解法是用具有存放不重复元素的容器,比如map或者set
1 class Solution { 2 public: 3 bool containsDuplicate(vector<int>& nums) { 4 set<int> s(nums.begin(),nums.end()); 5 return nums.size() != s.size(); 6 } 7 };