leetcode-第217题-存在重复元素

leetcode-第217题-存在重复元素_第1张图片

方法一:(但可能会超出时间限制)

一、思路

双指针

建立两次循环(前一个元素和后一个元素),找出重复项 。

二、code

class Solution {

public:

    bool containsDuplicate(vector& nums) {

    int n = nums.size();

    for (int i = 0; i < n - 1; ++i) {

        for (int j = i + 1; j < n; ++j) {

            if (nums[i] == nums[j]) {

                return true;

            }

        }

    }

    return false;

}

};

方法二:

一、思路

哈希表

要正确地检查向量 nums 中是否存在重复元素,一种常见的方法是使用哈希表(或集合)来记录已经遍历过的元素。在遍历过程中,如果遇到已经存在于哈希表中的元素,则表示存在重复。

使用了 unordered_set(无序集合)来记录已经遍历过的元素。在遍历过程中,我们检查当前元素 num 是否已经存在于集合 seen 中。如果存在,则表示存在重复元素,返回 true。如果不存在,则将 num 插入到集合 seen 中,并继续遍历下一个元素。 

二、code

class Solution {

public:

    bool containsDuplicate(vector& nums) {

        unordered_set seen;//std::unordered_set 是使用哈希表实现的集合容器

        for (int num:nums)

        {

            if (seen.count(num)>0)//std::unordered_set::count() 函数用于返回集合中指定元素的个数。

                                    //seen.count(num) 返回元素 num 在集合 seen 中的个数。如果元素存在,则 返回 1(个数大于 0),表示集合中已经存在该元素。如果元素不存在,则返回 0(个数等于 0)。

            {

                return true;  

            }

            seen.insert(num);

        }

        return false;

    }

};

==================================================================

三、学习到的知识:

可利用哈希表查找元素重复项。

在 C++ 的标准库中,std::unordered_set 是使用哈希表实现的集合容器。std::unordered_set::count() 函数用于返回集合中指定元素的个数。 

你可能感兴趣的:(leetcode,算法,职场和发展)