欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 欢乐力扣:存在重复元素二

欢乐力扣:存在重复元素二

2025/2/27 6:09:03 来源:https://blog.csdn.net/wulele2/article/details/145888775  浏览:    关键词:欢乐力扣:存在重复元素二

文章目录

  • 1、题目描述
  • 2、思路1
      • 代码
  • 3、思路2
      • 代码


1、题目描述

 存在重复元素。
 给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。
在这里插入图片描述

2、思路1

 暴力法,直接两层for循环,但会超时。

代码

class Solution:def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:# 暴力会超时 for i in range(len(nums)-1):for j in range(i+1, len(nums)):if nums[i] != nums[j]:continue else:res = abs(i - j) <= kif res is True:return True return False 

3、思路2

 借助哈希表,来不断的存储元素值以及下标,若当前元素已经在字典里,则取出对应下标与k进行比较;若不满足条件,则将当前遍历的元素的下标存入字典,覆盖掉原来的下标。

代码

class Solution:def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:# 哈希表from collections import defaultdict hash_map = defaultdict(int)for i in range(len(nums)):# 若当前元素不在哈希表,则存进去if nums[i] not in hash_map:hash_map[nums[i]] = i   # 若在哈希表里:else:res = abs(i - hash_map[nums[i]]) <= k # 若查找成功,则返回Trueif res is True:return True else:hash_map[nums[i]] = i  # 覆盖字典为最新的下标return False 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词