您的位置:首页 > 其它

LeetCode219.存在重复II

2018-03-28 18:46 295 查看

题目

给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使 nums [i] = nums [j],并且 i 和 j 的绝对差值最大为 k。

分析

和217存在重复很像,多加一层判断,注意那种情况:[1,2,1,1]  k=1 ,虽然第一个 1 和第三个第四个 1 都不符合条件,但是第三个和第四个 1 符合条件。

代码

class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {

Map<Integer,List<Integer>> map = new HashMap<>();

for (int i = 0; i < nums.length; i++)
if (map.containsKey(nums[i])){
List<Integer> temp = map.get(nums[i]);
for (int j = 0; j < temp.size(); j++)
if ( i - temp.get(j) <= k && i - temp.get(j) != 0)
return true;
else {
List<Integer> tempp = new ArrayList<>(temp);
tempp.add(i);
map.put(nums[i],tempp);
}
}else {
List<Integer> temp = new ArrayList<>();
temp.add(i);
map.put(nums[i],temp);
}

return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐