Skip to content

219. Contains Duplicate II share

Problem Statement

Given an integer array nums and an integer k, return true if there are two distinct indicesi 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 <= 105
  • -109 <= nums[i] <= 109
  • 0 <= k <= 105

Solution:

go
package main

func containsNearbyDuplicate(nums []int, k int) bool {
	if len(nums) <= 1 {
		return false
	}

	set := make(map[int]int)

	// iterate over the array
	for i, v := range nums {
		// check if the value is in the set
		if _, ok := set[v]; ok {
			// if the value is in the set,
			// check if the difference between the current index and the index of the value in the set
			// is less than or equal to k
			if i-set[v] <= k {
				return true
			}
		}
		// add the value to the set
		set[v] = i
	}

	return false
}

...

Released under the MIT License.