219. Contains Duplicate II
Easy
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute 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
package leetcode.easy; public class ContainsDuplicateII { public boolean containsNearbyDuplicate(int[] nums, int k) { java.util.HashMap<Integer, Integer> map = new java.util.HashMap<Integer, Integer>(); for (int i = 0; i < nums.length; i++) { if (map.containsKey(nums[i]) && (i - map.get(nums[i]) <= k)) { return true; } else { map.put(nums[i], i); } } return false; } @org.junit.Test public void test() { int[] nums1 = { 1, 2, 3, 1 }; int[] nums2 = { 1, 0, 1, 1 }; int[] nums3 = { 1, 2, 3, 1, 2, 3 }; int k1 = 3; int k2 = 1; int k3 = 2; System.out.println(containsNearbyDuplicate(nums1, k1)); System.out.println(containsNearbyDuplicate(nums2, k2)); System.out.println(containsNearbyDuplicate(nums3, k3)); } }