
-Code
import java.util.*;
public class LeetCode219 {
public boolean containsNearbyDuplicate(int[] nums, int k) {
// 속도를 위한 map 선언
Map<Integer, Integer> numAndIdx = new HashMap<>();
// 계산
for (int i = 0; i < nums.length; i++) {
// 포함되어 있고 index의 차이가 k이하인 경우 true
if (numAndIdx.containsKey(nums[i]) &&
Math.abs(i - numAndIdx.get(nums[i])) <= k) return true;
numAndIdx.put(nums[i], i);
}
// 조건이 아니면 false
return false;
}
}
처음에 쉽게 풀려고 2중 for문으로 했으나 시간 초과 문제가 생겨 map으로 index와 같이 저장해서 로직을 짰습니다. 하지만 중복 수가 나오는 부분을 생각을 못해서 이를 최신화를 계속해보라는 힌트로 해결했습니다.
'알고리즘 문제 > Java' 카테고리의 다른 글
| [LeetCode/Java] Reverse Bits (0) | 2026.06.23 |
|---|---|
| [LeetCode/Java] Add Digits (0) | 2026.06.22 |
| [goormlevel/Java] 최고의 검사 (0) | 2026.06.20 |
| [LeetCode/Java] Unique Paths (0) | 2026.06.19 |
| [LeetCode/Java] Rotting Oranges (0) | 2026.06.18 |