当前位置: 首页 > java >正文

LeetCode 219.存在重复元素 II

目录

题目:

题目描述:

题目链接:

思路:

核心思路:

思路详解:

代码:

C++代码:

Java代码:


题目:

题目描述:

题目链接:

219. 存在重复元素 II - 力扣(LeetCode)

思路:

核心思路:

哈希表(Map)

思路详解:

Map存的是键值对,这题键存的是数组中的元素值,值存的是该元素值的最新索引(下标),时间复杂度为O(n)。遍历整个数组把每一个元素和它的索引存入Map,每次存入一个元素先调用containsKey判断Map中是否存在相同的键值,如果存在再判断这个相同元素不同索引差值的绝对值是否<=k,只要存在一对满足要求就可以马上return true;退出。如果不满足就把这个键值对存入Map(该键不存在就是新存入的键值对,键已经存在就是更新最新索引)。如果已经遍历完数组全部元素都没有满足要求的,就返回false

代码:

C++代码:

class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int,int> mp;for(int i=0;i<nums.size();i++){//由于unordered_map不允许存储具有重复键的元素,因此count函数基本上用于//检查unordered_map中是否存在带有给定键的元素if(mp.count(nums[i])&&abs(i+1-mp[nums[i]]<=k)){return true;}mp[nums[i]]=i+1;}return false;}
};

Java代码:

class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {HashMap<Integer,Integer> hm = new HashMap<>();for(int i=0;i<nums.length;i++){if(hm.containsKey(nums[i])&&Math.abs(i-hm.get(nums[i]))<=k){return true;}hm.put(nums[i],i);}return false;}
}

http://www.xdnf.cn/news/7194.html

相关文章:

  • OpenCV CUDA 模块中的矩阵算术运算-----在频域(复数频谱)中执行逐元素乘法并缩放的函数mulAndScaleSpectrums()
  • OSPF路由撤销及优化
  • 集成电路生产测试中CP针卡(Probe Card)简介
  • 深度强化学习 | 基于SAC算法的移动机器人路径跟踪(附Pytorch实现)
  • Redis学习打卡-Day4-Redis实现消息队列
  • 企业开发工具git的使用:从入门到高效团队协作
  • RabbitMQ通信模式(Simplest)Python示例
  • Codeforces 1017 Div4(ABCDEFG)
  • 【第三十六周】LoRA 微调方法
  • 09 错误代码重定向
  • 三:操作系统线程管理之线程概念
  • 数据库触发器Trigger
  • Hugo 安装保姆级教程(搭建个人blog)
  • 2025.05.17得物机考笔试真题第三题
  • UESplineThicken节点
  • Android开发-翻页类视图
  • 中文分词与数据可视化03
  • 【2025版】OpenFeign快速入门
  • Cursor:简单三步提高生成效率
  • HJ5 进制转换【牛客网】
  • 工作流介绍
  • TIMER免疫浸润分析
  • 谷歌地球引擎GEE将多个遥感影像作为多个波段合并成一张图像并下载的方法
  • C++ deque大小操作、deque数据插入、deque数据删除
  • Linux学习笔记|GCC编译指令基础|静动态库|makefile
  • KAG:通过知识增强生成提升专业领域的大型语言模型(五)
  • Python异常处理与OOP深度解析及实战案例
  • 软件调试纵横谈-18-页堆
  • Java程序员学AI(一)
  • [强化学习的数学原理—赵世钰老师]学习笔记02-贝尔曼方程-下