원티드 프리온보딩 - BE/과제 정리
[HashTable] 219. Contains Duplicate II
고마우미
2023. 8. 30. 03:37
문제
Given an integer array nums and an integer k, return true if there are two distinct indices i and j in the array such that nums[i] == nums[j] and abs(i - j) <= k.
Example 1:
Input: nums = [1,2,3,1], k = 3 Output: true
Example 2:
Input: nums = [1,0,1,1], k = 1 Output: true
Example 3:
Input: nums = [1,2,3,1,2,3], k = 2 Output: false
Constraints:
1 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9
0 <= k <= 10^5
문제접근
1. nums를 탐색하며 값과 인덱스를 HashMap에 입력한다.
2. HashMap 해당 값이 있는 경우 현재 인덱스와 값의 인덱스의 차를 구하여 k 이하인경우 true를 리턴한다.
문제풀이
import java.util.*;
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
HashMap<Integer,Integer> hm = new HashMap();
boolean answer = false;
for(int i = 0; i < nums.length; i++){
if(hm.get(nums[i]) != null && i - hm.get(nums[i]) <= k){
answer = true;
break;
}
hm.put(nums[i], i);
}
return answer;
}
}