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

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.dtcms.com/a/199880.html

相关文章:

  • QT的事件处理
  • 信息学奥赛一本通 1539:简单题 | 洛谷 P5057 [CQOI2006] 简单题
  • 基于单片机辣椒采摘小车系统设计与实现
  • 嵌入式学习笔记DAY23(树,哈希表)
  • Django之验证码功能
  • HTTPS核心机制拆解
  • [服务器备份教程] Rclone实战:自动备份数据到阿里云OSS/腾讯云COS等对象存储
  • 《Java高并发编程核心:volatile关键字全解析》
  • upload靶场1-5关
  • 微服务项目->在线oj系统(Java版 - 4)
  • Qt开发:QUdpSocket的详解
  • CLIP:论文阅读 -- 视觉模型
  • 遨游科普:三防平板是什么?有什么作用?
  • HDMI 屏幕 电脑HDMI HDMI采集卡的关系
  • 华为鸿蒙电脑发布,企业运营效率可以提高吗?
  • DiffPoint:用扩散模型解锁点云重建的新境界
  • 滑动验证码缺口识别与自动化处理技术解析
  • 【聚类】层次聚类
  • 甘特图工具怎么选?免费/付费项目管理工具对比测评(2025最新版)
  • 【数据结构】AVL树的实现
  • 腾讯云安装halo博客
  • 腾讯云Mysql实现远程链接
  • 腾讯云怎么在游戏云中助力
  • spring中yml配置上下文与tomcat等外部容器不一致问题
  • web常见的攻击方式
  • HJ10 字符个数统计【牛客网】
  • 细说STM32单片机FreeRTOS任务通知及其应用实例
  • unity 第一人称控制器
  • C语言之 比特(bit)、字节(Byte)、字(Word)、整数(Int)
  • 学习黑客PowerShell的历史、架构与工作原理深度解析