Contains Duplicate II

LeetCode Q 217 - Contains Duplicate II

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.

Solution

Note: Don’t forget the update the index of duplicated number.

Code:

public boolean containsNearbyDuplicate(int[] nums, int k) {
	Map<Character, Integer> map = new HashMap<>(); 
	for (int i = 0; i < nums.length;; i++) {
		if (!map.containsKey(nums[i])) map.put(nums[i], i);
		else {
			Integer left = map.get(nums[i]);
			if (i - left <= k) return true;
			else map.put(nums[i], i); // don't forget to update the position of nums[i]!!!
		}
	}
	return false;
}

   Reprint policy


《Contains Duplicate II》 by Tong Shi is licensed under a Creative Commons Attribution 4.0 International License
  TOC