import java.util.*;
public class Main {
public static boolean containsNearbyDuplicateOptimized(int[] nums, int k) {
Map
<Integer, Integer
> numIndices
= new HashMap
<>(); for (int i = 0; i < nums.length; ++i) {
if (numIndices.containsKey(nums[i]) && i - numIndices.get(nums[i]) <= k) {
return true;
}
numIndices.put(nums[i], i);
}
return false;
}
public static void main
(String[] args
) { int[] nums = {1, 1, 3, 1, 2, 3};
int k = 2;
if (containsNearbyDuplicateOptimized(nums, k)) {
System.
out.
println("There are two equal numbers within distance " + k
); } else {
System.
out.
println("No two equal numbers found within distance " + k
); }
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNvbnRhaW5zTmVhcmJ5RHVwbGljYXRlT3B0aW1pemVkKGludFtdIG51bXMsIGludCBrKSB7CiAgICAgICAgTWFwPEludGVnZXIsIEludGVnZXI+IG51bUluZGljZXMgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1zLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgIGlmIChudW1JbmRpY2VzLmNvbnRhaW5zS2V5KG51bXNbaV0pICYmIGkgLSBudW1JbmRpY2VzLmdldChudW1zW2ldKSA8PSBrKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBudW1JbmRpY2VzLnB1dChudW1zW2ldLCBpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBpbnRbXSBudW1zID0gezEsIDEsIDMsIDEsIDIsIDN9OwogICAgICAgIGludCBrID0gMjsKICAgICAgICBpZiAoY29udGFpbnNOZWFyYnlEdXBsaWNhdGVPcHRpbWl6ZWQobnVtcywgaykpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGVyZSBhcmUgdHdvIGVxdWFsIG51bWJlcnMgd2l0aGluIGRpc3RhbmNlICIgKyBrKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5vIHR3byBlcXVhbCBudW1iZXJzIGZvdW5kIHdpdGhpbiBkaXN0YW5jZSAiICsgayk7CiAgICAgICAgfQogICAgfQp9Cg==