/*
Given an array of integers and an integer k, find out whether
there are two distinct indices i and j in the array such that
nums[i] = nums[j] and the difference between i and j is at most k.
*/
/*
思路:使用map,更新value,但是超时了!!,于是发现map.put(nums[i],i);在fi和else中都有,
则优化一下就可以了!
*/
public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
int len = nums.length,
i = 0;
for(;i < len;i++) {
if(!map.containsKey(nums[i])) {
map.put(nums[i],i);
}else{
if((i - map.get(nums[i])) <= k) {
return true;
}
map.put(nums[i],i);
}
}
return false;
}
}
public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
int len = nums.length,
i = 0;
for(;i < len;i++) {
if(map.containsKey(nums[i])) {
if((i - map.get(nums[i])) <= k) {
return true;
}
}
map.put(nums[i],i);
}
return false;
}
}
leetcode-java-219. Contains Duplicate II
本文介绍了一种算法解决方案,用于判断在一整数数组中是否存在两个不同的索引i和j,使得nums[i]=nums[j]并且i与j之间的差的绝对值不超过k。通过使用哈希表(map)来实现这一目标,提供了两种不同的实现方式并讨论了优化方法。

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



