Leetcode 217. Contains Duplicate

来源:互联网 发布:软件交付需求变更 编辑:程序博客网 时间:2024/06/07 06:54

题目的意思是,判断一个数组中是否有重复的数,有的话返回true,否则返回false。

 

方法1:对数组进行排序,遍历数组,如果出现前后元素相等,说明有重复数。

时间复杂度O(nlogn),不需要开辟额外空间。

class Solution {public:    bool containsDuplicate(vector<int>& nums) {        sort(nums.begin(), nums.end());        for(int i=1; i<nums.size(); i++)        {            if(nums[i]==nums[i-1])                return true;        }        return false;    }};

方法2:既然用了sort,不如直接用unique:

class Solution {public:    bool containsDuplicate(vector<int>& nums) {        sort(nums.begin(), nums.end());        return unique(nums.begin(), nums.end())!=nums.end();    }};

方法3:用哈希表,对数组中的每个元素先去哈希表中查找,如果找到了就直接返回true,找不到的话就把这个元素插入到表中,时间复杂度O(n).

class Solution {public:    bool containsDuplicate(vector<int>& nums) {        unordered_set<int>t;        for(int x: nums)        {            if(t.find(x)!=t.end())                return true;            t.insert(x);        }        return false;    }};


方法4:一行代码实现,比方法3快

classSolution {public:    boolcontainsDuplicate(vector<int>& nums) {        return nums.size() >unordered_set<int>(nums.begin(),nums.end()).size();    }};

原创粉丝点击