LeetCode 2022/1/19 每日一题 [219]存在重复元素II
2022/1/19 23:25:49
本文主要是介绍LeetCode 2022/1/19 每日一题 [219]存在重复元素II,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
给你一个整数数组 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
这一题属于基础题,力扣AC率43.7%,难度为easy,Hard面前唯唯诺诺,遇到Easy重拳出击,直接上结果:
class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { Map<Integer, Integer> map = new HashMap<>(); int index = 0; for (int i : nums) { if (map.containsKey(i) && index - map.get(i) <= k) { return true; } else { map.put(i, index); index++; } } return false; } }
时间复杂度: O(n) 空间复杂度: O(n)
看到网上有人暴力两个for循环复杂度到了O(n2)直接超时
这一题还是有需要注意的点的,为了避免使用Math.abs(),最好是当前的index减去遍历过的map.get(i),保证结果是正数。
然后可能有些人会有疑问,HashMap的key具有唯一性,要是有不满足条件但是key相同的就会覆盖掉。其实仔细想想盖掉也无所谓的,毕竟index小的减掉都超,index大的更不可能符合了。
这篇关于LeetCode 2022/1/19 每日一题 [219]存在重复元素II的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在使用平台私钥进行解密时提示 "私钥解密失败" 错误信息是什么原因?-icode9专业技术文章分享
- 2024-11-15Layui框架有哪些方式引入?-icode9专业技术文章分享
- 2024-11-15Layui框架中有哪些减少对全局环境的污染方法?-icode9专业技术文章分享
- 2024-11-15laydate怎么关闭自动的日期格式校验功能?-icode9专业技术文章分享
- 2024-11-15laydate怎么取消初始日期校验?-icode9专业技术文章分享
- 2024-11-15SendGrid 的邮件发送时,怎么设置回复邮箱?-icode9专业技术文章分享
- 2024-11-15使用 SendGrid API 发送邮件后获取到唯一的请求 ID?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 tags标签最多有多少个?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 怎么批量发送给多个人?-icode9专业技术文章分享
- 2024-11-15如何搭建web开发环境并实现 web项目在浏览器中访问?-icode9专业技术文章分享