LeetCode-219. 存在重复元素 II

devtools/2024/9/25 23:23:35/

题目描述

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

示例 1:

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

示例 2:

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

示例 3:

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

初次尝试:

复杂度高,效率差。

public boolean containsNearbyDuplicate(int[] nums, int k) {for(int i = 0; i < nums.length - 1; i++){int j = i + 1;int temp = k;while(temp >= 0 && j < nums.length){if(nums[i] == nums[j] && (Math.abs(i - j) <= k)){return true;}j++;temp--;}}return false;}

题解

滑动窗口:设置一个大小为k+1的窗口,从0开始,窗口逐渐增大至k,窗口向右滑动的时候最右侧元素下标为i。当i<k时,窗口不断增大;当i = k时候,窗口大小为k+1i >k时,需要将窗口向右滑动,也就是i++后,需要将下标为i - k -1的元素移出窗口,并且尝试将nums[i]加入窗口,如果窗口中已有该元素,则返回true

public boolean containsNearbyDuplicate(int[] nums, int k) {//Set是元素无序且不可重复的集合Set<Integer> set = new HashSet<Integer>();for(int i = 0; i < nums.length; i++){if(i > k){set.remove(nums[i - k - 1]);}if(!set.add(nums[i])){return true;//添加不进去 说明窗口里有这个元素}}return false;}

http://www.ppmy.cn/devtools/15324.html

相关文章

Postman 工具发送请求的技巧与实践

在开发和测试 API 时&#xff0c;发送 JSON 格式的请求是一个常见需求。 在 Postman 中构建和发送 JSON 请求 创建一个新的请求 首先&#xff0c;在 Postman 启动界面上找到并点击 “New” 按钮&#xff0c;选择 “HTTP Request” 来开始新建一个请求。这一步骤允许你定义请…

iclientOpenlayer用uniapp开发移动端GIS应用设计及实现

GIS移动端应用是将地理信息系统&#xff08;GIS&#xff09;技术应用于移动设备&#xff08;如智能手机、平板电脑&#xff09;上&#xff0c;使用户能在户外或移动场景下访问、收集、分析和展示地理信息。以下是GIS移动端应用的一些关键特性和应用场景&#xff1a; 关键特性&…

【S32K3 MCAL配置】-6.1-ICU Driver:WKPU外设让MCU芯片从“Low Power Mode低功耗模式”中WakeUp唤醒

"><--返回「Autosar_MCAL高阶配置」专栏主页--> 案例背景:此博文适用于“MCU芯片处在常电”工作(MCU的5V/3.3V供电一直存在)的项目当中。另外S32K3仅有RUN模式和STANDBY模式,MCU进入“Low Power Mode低功耗模式”(STANDBY模式)后,可通过WKPU Pin唤醒MCU芯片…

桌面运维类面试非技术问题

1、计算机系统卡顿怎么处理 计算机系统卡顿可以通过硬件升级、系统优化、软件优化和安全防护等措施可解决。 包括增加内存条、更换固态硬盘、磁盘清理、关闭后台进程、禁用开机启动项、重装系统和更新驱动程序等。 卸载不常用软件、使用轻量级软件和开启防火墙也是有效的方法。…

AngularJS中文手册后半部分学习

AngularJS 简介 AngularJS的中文参考手册 AngularJS 表格 结合ng-repeat命令 <div ng-app"myApp" ng-controller"customersCtrl"><table><tr ng-repeat"x in names"><td>{{ x.Name }}</td><td>{{ x.Coun…

UniApp 中的路由守卫与拦截器:守护应用的每一步

正文&#xff1a; 路由守卫和拦截器在前端开发中扮演着重要的角色&#xff0c;它们可以用来控制页面访问权限、全局请求拦截等。在 UniApp 中&#xff0c;路由守卫和拦截器同样具有强大的功能&#xff0c;能够保护应用的安全和稳定性。本文将深入探讨 UniApp 中的路由守卫和拦…

ELK日志分析系统

一、ELK日志分析系统简介 ELK不仅适用于日志分析&#xff0c;还可以支持其他数据搜索、分析和收集的场景&#xff0c;如网络流量分析、性能分析等 1.1 日志服务器 提高安全性 集中存放日志 缺陷&#xff08;对日志分析困难&#xff09; 1.2 ELK日志分析系统 Elasticsearch …

【ruoyi-vue】axios的封装理解和基本使用

axios的配置 ruoyi的前端对axios进行了封装&#xff0c;让我们发get请求或者是post请求更加方便了。 ruoyi对axios的封装在下面文件中&#xff1a;打开文件&#xff0c;可以看到它有三个显眼的方法&#xff0c;分别是request拦截器、response拦截器和通用下载方法。ruoYi接口地…