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

【哈希】Leetcode 219. 存在重复元素 II【简单】

存在重复元素 II

  • 给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,
  • 满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;
  • 否则,返回 false 。

示例 1:

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

解题思路

  • 使用哈希表(HashMap)来记录每个元素最后一次出现的索引。
  • 遍历数组时,检查当前元素是否已经在哈希表中存在且索引差小于等于 k。
  • 如果存在这样的元素,则返回 true;
  • 如果遍历完整个数组后没有找到这样的元素,则返回 false。

Java实现

public class ContainsNearbyDuplicate {public boolean containsNearbyDuplicate(int[] nums, int k) {Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {if (map.containsKey(nums[i]) && i - map.get(nums[i]) <= k) {return true;}map.put(nums[i], i);}return false;}public static void main(String[] args) {ContainsNearbyDuplicate solution = new ContainsNearbyDuplicate();// Test Case 1int[] nums1 = {1, 2, 3, 1};int k1 = 3;System.out.println("Test Case 1:");System.out.println("Result: " + solution.containsNearbyDuplicate(nums1, k1)); // Expected: true// Test Case 2int[] nums2 = {1, 2, 3, 1, 2, 3};int k2 = 2;System.out.println("\nTest Case 2:");System.out.println("Result: " + solution.containsNearbyDuplicate(nums2, k2)); // Expected: false}
}

时间空间复杂度

  • 时间复杂度:遍历数组一次,时间复杂度为 O(n),其中 n 是数组的长度。

  • 空间复杂度:使用了一个哈希表来存储元素及其索引, 最坏情况下需要存储 n 个元素,因此空间复杂度为 O(n)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JJJ:WARN,WARN_ON,BUG_ON
  • k8s pvc pending waiting for first consumer to be created before binding
  • CGAN|生成手势图像|可控制生成
  • Clickhouse 字符串函数使用总结—— Clickhouse基础篇(七)
  • 拼多多携手中国农业大学,投建陕西佛坪山茱萸科技小院
  • wordpress主题模板兔Modown 9.1开心版附送erphpdown v17.1插件
  • springboot错误
  • react 低代码平台方案汇总
  • 【ai】chatgpt的plugin已经废弃
  • 供应链金融模式学习资料
  • IntelliJ IDEA常用快捷键 + 动图演示!
  • Spring相关知识集锦----1
  • spring-boot集成slf4j(二)logback配置详解
  • 第十一课,end关键字、简单while循环嵌套、初识for循环
  • CAN笔记第二篇,车载测试继续学起来!
  • 2017-08-04 前端日报
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CEF与代理
  • Docker入门(二) - Dockerfile
  • Javascript Math对象和Date对象常用方法详解
  • mysql 数据库四种事务隔离级别
  • TCP拥塞控制
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue.js-Day01
  • vue-cli3搭建项目
  • 聊聊hikari连接池的leakDetectionThreshold
  • 聊聊redis的数据结构的应用
  • 每天一个设计模式之命令模式
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端性能优化--懒加载和预加载
  • 小而合理的前端理论:rscss和rsjs
  • 新手搭建网站的主要流程
  • 赢得Docker挑战最佳实践
  • raise 与 raise ... from 的区别
  • #{} 和 ${}区别
  • #pragma pack(1)
  • #QT(智能家居界面-界面切换)
  • $().each和$.each的区别
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (分布式缓存)Redis持久化
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (七)Activiti-modeler中文支持
  • (三分钟)速览传统边缘检测算子
  • (十三)MipMap
  • (四)模仿学习-完成后台管理页面查询
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • /3GB和/USERVA开关
  • @NotNull、@NotEmpty 和 @NotBlank 区别