力扣-217.存在重复元素

Method 1

先对整个数组进行排序,然后从前往后开始遍历,判断前一个数 是否跟相邻的数相等

AC Code

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

时间复杂度较高
力扣-217.存在重复元素_第1张图片

Method 2

利用哈希表,直接遍历数组,将遍历的数存到哈希表中,每次存储之前判断该数是否在哈希表中已存在

AC Code

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

力扣-217.存在重复元素_第2张图片

你可能感兴趣的:(LeetCode,leetcode,哈希算法,算法)