算法日常・每日刷题--<哈希>3

217. 存在重复元素 - 力扣(LeetCode)217. 存在重复元素 - 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1:输入:nums = [1,2,3,1]输出:true解释:元素 1 在下标 0 和 3 出现。示例 2:输入:nums = [1,2,3,4]输出:false解释:所有元素都不同。示例 3:输入:nums = [1,1,1,3,3,4,3,2,4,2]输出:true 提示: * 1 <= nums.length <= 105 * -109 <= nums[i] <= 109https://leetcode.cn/problems/contains-duplicate/

一、题目

给你一个整数数组 nums。如果任一值在数组中出现至少两次,返回 true;如果数组中每个元素互不相同,返回 false

二.解法

利用哈希集合unordered_set元素唯一的特性。集合中不能存放重复数据,我们一边遍历数组,一边记录已经访问过的数字:

  1. 遍历当前数字,先查询哈希集合;
  2. 如果集合中已经存在该数字 → 找到重复元素,直接返回true
  3. 如果不存在,则把当前数字插入哈希集合;
  4. 全部遍历完成仍未发现重复,返回false

#include<unordered_set>
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        int n=nums.size();
        unordered_set<int> hash(n);
        for(auto i:nums)
        {
            if(hash.count(i)>0)
            return true;
            hash.insert(i);
        }
        return false;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值