LeetCode_219. Contains Duplicate II

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));
	}
}

猜你喜欢

转载自www.cnblogs.com/denggelin/p/11731275.html