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

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

一、思路

双指针

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

二、code

class Solution {

public:

    bool containsDuplicate(vector<int>& 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<int>& nums) {

        unordered_set<int> 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() 函数用于返回集合中指定元素的个数。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值