【C++刷题】力扣-#219-存在重复元素II

server/2024/10/22 13:13:56/

题目描述

给定一个整数数组 nums 和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j 使得 nums[i] = nums[j] 且 i!= j。也就是说,不能有重复的元素。

示例

示例 1:

输入: nums = [1,2,3,1], k = 3
输出: true

示例 2:

输入: nums = [1,2,3,1,2,4], k = 3
输出: false

示例 3:

输入: nums = [1,2,3,1,2,4], k = 2
输出: true

题解

这个问题可以通过使用哈希表来解决。

  1. 初始化:创建一个空的哈希表 hashMap 来存储数组元素及其索引。
  2. 遍历数组:遍历整数数组 nums。
    ○ 对于每个元素,检查它是否已经在哈希表中:
    ■ 如果在,并且索引差小于 k,则返回 true。
    ■ 如果在,并且索引差大于等于 k,则从哈希表中移除旧的索引。
    ■ 如果不在,将其添加到哈希表中,并记录当前索引。
  3. 返回结果:如果遍历结束后没有找到重复元素,则返回 false。

代码实现

bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int, int> hashMap;for (int i = 0; i < nums.size(); ++i) {if (hashMap.find(nums[i]) != hashMap.end() && i - hashMap[nums[i]] <= k) {return true;}hashMap[nums[i]] = i;}return false;
}

复杂度分析

● 时间复杂度:O(n),其中 n 是数组 nums 的长度。我们需要遍历一次数组,并且对于每个元素,我们进行常数时间的哈希表操作。
● 空间复杂度:O(n),因为在最坏的情况下,我们可能需要将所有元素存储在哈希表中。
这个算法的优势在于它的时间效率较高,只需要一次遍历即可判断是否存在重复元素,且直接利用了哈希表的快速查找特性。


http://www.ppmy.cn/server/133904.html

相关文章

SpringMVC之 文件上传和下载

1. 文件上传 1.1 前端注意事项 文件上传操作&#xff0c;前端的表单项需要如下三项设置&#xff1a; &#xff08;1&#xff09;input标签的type属性应设置为file&#xff0c;并且注意不要在input标签中设置value属性&#xff0c;因为这可能导致文件上传不成功&#xff1b; …

比瓴科技入选国家工业信息安全发展研究中心SBOM工作组首批成员单位

近日&#xff0c;由开放原子开源基金会主办&#xff0c;开源风险评估与治理技术实验室承办的2024开放原子开源生态大会软件物料清单&#xff08;SBOM&#xff09;分论坛在北京成功举办。 在会议上&#xff0c;国家工业信息安全发展研究中心&#xff08;简称“中心”&#xff0…

【漏洞修复】修复上传文件不检测文件内容的问题

修改文件crmeb/crmeb/services/upload/storage/Local.php增加下面代码 $stream fopen($fileHandle->getPathname(), r); $content (fread($stream, filesize($fileHandle->getPathname()))); if (is_resource($stream)) { fclose($stream); } if (preg_match(/thin…

flask基础学习

一、Python之flask、Django、Tornado框架 一&#xff09;django 主要是用来搞快速开发的&#xff0c;他的亮点就是快速开发&#xff0c;节约成本。 正常的并发量不过10000&#xff0c;如果要实现高并发的话&#xff0c;就要对django进行二次开发&#xff0c;比如把整个笨重的框…

ApacheShiro反序列化 550 721漏洞

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理个漏洞被称为 Shiro550 是因为在Apache Shiro的GitHub问题跟踪器中&#xff0c;该漏洞最初被标记为第550个问题,721漏洞名称也是由此而来 Shiro-550 CVE-2016-4437 Shiro反序列化Docker复现 …

Web页面测试方法「详细介绍」

Web页面测试方法「详细介绍 」 一、Web页面常见控件概述二、功能测试方法2.1 文本框&#xff08;Input Field&#xff09;2.2 下拉菜单&#xff08;Dropdown List&#xff09;2.3 按钮&#xff08;Button&#xff09;2.4 复选框&#xff08;Checkbox&#xff09;2.5 单选按钮&a…

EF Core 中避免 SQL 注入的三种写法

SQL 注入攻击可能会对我们的应用程序产生严重影响&#xff0c;导致敏感数据泄露、未经授权的访问和应用程序受损。EF Core 提供了三种内置机制来防止 SQL 注入攻击。 1、利用 LINQ 查询语法和参数化查询&#xff0c;这是比较推荐的做法。 await using var context new Postg…

做一个英文PDF转化为中文PDF的系统

以下是基于本地模型的PDF翻译系统的完整设计和代码实现&#xff0c;支持术语表的导入&#xff0c;并保留PDF的原有格式。 系统设计概述 本系统的目标是将英文PDF文件翻译成中文&#xff0c;并保持原有的排版和格式&#xff08;如字体、图片、表格等&#xff09;不变&#xff…