Leetcode Java Contains Duplicate II
업데이트:
문제
코드
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Set<Integer> set = new HashSet<>();
for (int idx = 0; idx < nums.length; idx++) {
if (idx > k) {
set.remove(nums[idx - k - 1]);
}
if (!set.add(nums[idx])) {
return true;
}
}
return false;
}
}
결과
설명
-
주어진 배열 nums의 내부 값 중 임의 동일한 두 값이 배열 내 k 거리안에 존재하는지를 확인하는 문제이다.
-
k번째 거리까지 값을 넣어 검증에 사용하기 위한 set을 정의한다.
- 반복을 통해 nums의 모든 값을 탐색하여 1번에서 이야기한 조건에 충족하는지를 검증한다.
- idx가 k보다 크게 되면 조건의 범위에서 벗어난 nums[$idx - k - 1$] 값을 set에서 제거한다.
- set에 nums[idx] 값을 추가할 때 해당 값이 set에 존재하는 경우, true를 주어진 문제의 결과로 반환한다.
- 반복이 끝나면 조건에 충족한 값이 존재하지 않으므로, false를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기