网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > Python >

力扣第219题-存在重复元素II

时间:2025-03-20 23:08

人气:

作者:admin

标签:

导读:1. 题目描述 给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) lt;= k 。如果存在,返回 true ;否则,返回 false 。 示例...
给你一个整数数组 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

提示:

1 <= nums.length <= 105
-109 <= nums[i] <= 109
0 <= k <= 105

2.1 方法一:暴力滑动窗口

这种思路很简单,就是使窗口大小为 2 ~ len(nums) - 1,然后让窗口向后滑动,寻找满足条件的数据。

但是!!!这种方法毫无疑问时间复杂度过高!

代码实现:

class Solution:
    def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
        # 方法一:滑动窗口
        for window_width in range(1, len(nums)):
            for i in range(len(nums) - window_width):
                if nums[i] == nums[i + window_width] and window_width <= k:
                    return True
        return False

2.2 哈希表

下面有请我们的老朋友--哈希表。

思路是这样的:我们遍历一遍nums列表,注意需要使用到index和值,如果列表元素不在哈希表中或者 (列表元素在哈希表中)但是当前的索引-这个元素在哈希表中对应的值(其实就是旧的index)大于k,那么说就让hashmap[num] = index,将值和index存进哈希表中或者进行更新,否则的话(这个元素在哈希表中并且索引的差值小于等于k,那么正好满足条件)。

代码实现:

class Solution:
    def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
        # 方法二:哈希表
        hashmap = {}
        for index, num in enumerate(nums):
            if num in hashmap and index - hashmap[num] <= k:
                return True
            hashmap[num] = index
        return False

注意:上述代码参考力扣官方题解!

遇到数组相关的难题,可以思考使用哈希表,往往会有很好的效果。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信