此题是判断一个数组中是否有数重复,我是利用了set数据结构的性质,讲所有的数都放入到set中,如果vector和set的长度不同,则有重复的数,因为set会自动删除重复的数字。 看了别人的解答,发现set是用二分树实现的,时间复杂度是nlgn,得到的数是有序的。对于此题来说,有序没有意义,所以可以采用基于hashtable实现的unsort_set,算法复杂度是n。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
if(nums.empty())
return false;
set<int> temp;
for(int i=0;i<nums.size();i++)
temp.insert(nums[i]);
if(temp.size()==nums.size())
return false;
else
return true;
}
};