LeetCode- 219. There are duplicate elements II-hash table, array

219. There are duplicate elements II

Title description

Given an integer array and an integer k, judge whether there are two different indexes i and j in the array, such that nums [i] = nums [j], and the absolute value of the difference between i and j is at most 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

Problem-solving ideas

  • Search for the current element in the hash table and return true if it is found.

  • Insert the current element in the hash table.

  • If the size of the current hash table exceeds k, delete the oldest element in the hash table.

  • Return false.

Hash table

class Solution {
    
    
    public boolean containsNearbyDuplicate(int[] nums, int k) {
    
    
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
    
    
            if (set.contains(nums[i]))
                return true;
            set.add(nums[i]);
            if (set.size() > k){
    
    
                set.remove(nums[i = k]);
            }
        }
        return false;
    }
}

Guess you like

Origin blog.csdn.net/qq_35655602/article/details/115256261