https://leetcode.com/problems/contains-duplicate-ii/
abs(i - j) <= k
- 어떤 숫자가 특정 인덱스 범위 내에 있는지 확인해야 한다.
🤨 자료구조 Map을 이용하자
➡️ map을 이용해 (숫자-인덱스) 쌍을 저장하자
i - j <= k
이다. (조건)for(int i=0, 배열 끝까지){
if(map.get(nums[i]) >= i - k){
return true
}
map.put(nums[i],i)
}
return false
public boolean containsNearbyDuplicate(int[] nums, int k) {
HashMap<Integer, Integer> cache = new HashMap<>();
int length = nums.length;
for (int i = 0; i < length; i++) {
Integer prev = cache.put(nums[i], i);
if (prev != null && i - prev <= k) {
return true;
}
}
return false;
}
나와 동일하게 문제를 풀이한 것 같다.
그런데 Map에 이미 있는 key는 이전 value를 반환한다는 것을 새롭게 배웠다.