题目
给定一个整数数组和一个整数 k
,判断数组中是否存在两个不同的索引i
和 j
,使得nums [i] = nums [j]
,并且 i
和j
的差的 绝对值
至多为 k
。
示例 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
解法
思路: 哈希表。
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
if(nums == null || nums.length == 0){
return false;
}
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0 ; i < nums.length ; i++){
Integer index = map.get(nums[i]);
if(index != null && (i-index) <= k){
return true;
}
map.put(nums[i],i);
}
return false;
}
}
总结
本篇文章讲解了算法题目的思路和解法,代码和笔记由于纯手打,难免会有纰漏,如果发现错误的地方,请第一时间告诉我,这将是我进步的一个很重要的环节。以后会定期更新算法题目以及各种开发知识点,如果您觉得写得不错,不妨点个关注,谢谢。