Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between iand j is at most k.
思路:遍历数组,用一个HashMap才存储数组中每个数字所对应的下标,如果当前数字不曾在HashMap中出现过直接将当前数字以及其下标加入HashMap中,如果已经出现过,则取出HashMap相应数字的下标,如果下标之差小于等于k直接返回true,如果下标之差大于k,那么就要更新HashMap中与当前数字相同的数字的下标为当前下标啦。
public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
HashMap<Integer,Integer> hs=new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;i++)
{
if(!hs.containsKey(nums[i]))
hs.put(nums[i],i);
else {
int j=hs.get(nums[i]);
if(Math.abs(i-j)<=k)
return true;
else hs.put(nums[i],i);
}
}
return false;
}
}