Contiene Duplicado II
Este problema consiste en, dado un arreglo de enteros nums y un entero k, regresar verdadero si existen dos índices distintos i y j en el arreglo tales que nums[i] == nums[j] y abs(i - j) <= k.
Solución
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
map<int, int> m;
for (int i{0}; i < nums.size(); i++) {
int ele = nums[i];
if (m.contains(ele)) {
if (abs(m[ele] - i) <= k)
return true;
}
m[ele] = i;
}
return false;
}
};
Se guarda en un mapa cada valor junto con el último índice donde apareció. Al recorrer el arreglo, si el elemento ya está en el mapa se revisa la distancia entre su índice anterior y el actual; si es menor o igual a k se regresa verdadero. En cualquier caso se actualiza el índice del elemento para futuras comparaciones.