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

面试经典150题[046]:存在重复元素 II(LeetCode 219)

存在重复元素 II(LeetCode 219)

题目链接:存在重复元素 II(LeetCode 219)
难度:简单

1. 题目描述

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

要求:

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9
  • 0 <= k <= 10^5

示例:

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

2. 问题分析

2.1 规律

  • 数组中需要检测是否存在距离不超过 k 的重复元素。
  • 暴力遍历每对元素会达到 O(n^2) 时间复杂度,鉴于 n <= 10^5,会超时。
  • 核心问题:如何高效追踪最近出现的重复元素,并检查其距离是否 <= k?

2.2 哈希表思路

我们使用哈希表(字典)记录每个元素最近出现的索引:

  • 遍历数组,对于每个 nums[i]:
    • 如果 nums[i] 已存在于哈希表中,且当前索引 i 与其最近索引的差值 <= k,则返回 true。
    • 否则,更新哈希表中 nums[i] 的索引为 i。
  • 此方法只记录最近索引,确保检测到最接近的重复对,同时满足距离要求。
  • 备选:使用大小为 k 的滑动窗口 + 集合,添加元素前检查是否存在,超出窗口时移除最早元素。空间可优化为 O(k)。

3. 代码实现

Python

class Solution:def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:index_map = {}for i, num in enumerate(nums):if num in index_map and i - index_map[num] <= k:return Trueindex_map[num] = ireturn False

C++

class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int, int> index_map;for (int i = 0; i < nums.size(); ++i) {if (index_map.count(nums[i]) && i - index_map[nums[i]] <= k) {return true;}index_map[nums[i]] = i;}return false;}
};

4. 复杂度分析

  • 时间复杂度:O(n),遍历一次数组,每次哈希操作平均 O(1)。
  • 空间复杂度:O(n),最坏情况下存储所有独特元素。

5. 总结

  • 重复元素 + 距离限制 → 哈希表记录最近索引是高效选择。
  • 可扩展到滑动窗口变体,适用于 k 较小时优化空间。
  • 类似问题如寻找无重复子串,但这里焦点在固定距离内重复。

复习

面试经典150题[016]:接雨水(LeetCode 42)
面试经典150题[031]:最长无重复字符子串(LeetCode 3)

http://www.dtcms.com/a/451148.html

相关文章:

  • dede网站如何换logo网站开发需要哪些证书
  • 静态企业网站模板下载网上书店网站建设毕业设计
  • 网站推广策划书 精品中信建设有限责任公司客户
  • cv领域接地气的方向
  • 快速网站开发介绍浙江建设网查询
  • 整站优化快速排名广州手机网站建设公司哪家好
  • 在线动画手机网站模板360推广登录入口官网
  • 设计网站推荐语长治企业网站建设
  • 网上做调查网站做短袖的网站
  • 想推网站目录源码宛城区网站推广
  • php手机网站后台源码电子商务有限公司有哪些
  • 工厂外贸网站建设ps怎么做网站logo
  • 恩平市网站建设国外设计网站网址
  • 广州网站服务涟源seo快速排名
  • IEEE/ASME Transactions on Mechatronics投稿流程和注意事项
  • 太原做企业网站现在去横琴会变黄码吗
  • TensorFlow深度学习实战(39)——机器学习实践指南
  • Python函数参数设计的实战逻辑
  • 网站设计字体最好用外网服务器租用
  • 关于药品网站建设策划书淘宝分销平台
  • 网站dw建设凯里门户网
  • Flash擦写均衡攻略:让嵌入式设备的时间记录更长寿
  • 快速了解并使用Matplotlib库
  • 潍坊模板建站平台销售人员培训课程有哪些
  • 哪些网站可以找到做海报的素材网页设计与网站建设电话
  • 广州市建设工程项目代建局网站宿州网站公司
  • 大连科技公司建设网站硬件工程师都没人干了
  • 国内jsp网站有哪些搜索优化网络推广
  • 南通市优普网站建设2345网址导航开创中国
  • 两学一做专题网站公司官网推广