个人网站建设心得体会,做淘宝客网站哪个好,网站开发 外包空心,wordpress 媒体库 ftp问题描述#xff1a;给定一个整数数组和一个整数k#xff0c;判断数组中是否存在两个不同的索引i和j#xff0c;使得nums[i]nums[j],并且i和j的绝对值最多为k。
map求解#xff1a;首先将第一个元素放入map中#xff0c;因为它不可能与任何一个元素构成队列#xff0c;然…问题描述给定一个整数数组和一个整数k判断数组中是否存在两个不同的索引i和j使得nums[i]nums[j],并且i和j的绝对值最多为k。
map求解首先将第一个元素放入map中因为它不可能与任何一个元素构成队列然后从第二个元素开始遍历每次都取map中寻找是否存在与这个元素相同的值若存在则判断他们索引的差值若不大于k则返回true。
public Boolean hasDup(int []nums,int k)
{
MapInteger,Integermapnew Map();
map.put(nums[0],0);
for(int i1;inums.length;i)
{
if(map.containsKey(nums[i]))
{
if(Math.abs(map.get(nums[i])-i)k)
{
return true;
}
}else
{
map.add(nums[i],i);
}
}
return false;
}
滑动窗口求解使用set用来装k1个元素最多装k1个元素如果满了则将第一个元素移除。
public Boolean isDup(int []nums,int k)
{
SetIntegersetnew HashSet();
set.add(nums[0]);
for(int i1;inums.length;i)
{
if(ik)
{
set.removee(i-k-1);
}
if(!set.add(nums[i])){return true;}
}
return false;
}