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

2、算法分析
使用Map键值对集合。
注意:数组中的元素是固定的,不能移动或者改变位置,因为涉及到下标。
Map中的Key存储的是数组的值,Map的Value存储的是元素下标对应的值。
注意:i - map.get(nums[i]) <= k,判断条件
看代码
3、代码实现
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0;i < nums.length;i++){
if(map.containsKey(nums[i]) && (i - map.get(nums[i]) <= k)){
return true;
}
map.put(nums[i],i);
}
return false;
}
}
本文介绍了一种利用Map数据结构来解决数组中寻找距离不超过k的重复元素的问题。通过存储数组值及其索引来高效判断重复元素的存在,并给出了具体的Java代码实现。

557

被折叠的 条评论
为什么被折叠?



