원티드 프리온보딩 - 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;
    }
}