123456789101112131415161718192021222324252627 |
- func containsNearbyDuplicate(nums []int, k int) bool {
- if k <= 0 {
- return false
- }
- queue := make([]int, 0)
- set := make(map[int]struct{})
- i, n := 0, len(nums)
- for i = 0; i < k && i < n; i++ {
- queue = append(queue, nums[i])
- if _, ok := set[nums[i]]; ok {
- return true
- } else {
- set[nums[i]] = struct{}{}
- }
- }
- for ; i < n; i++ {
- queue = append(queue, nums[i])
- if _, ok := set[nums[i]]; ok {
- return true
- } else {
- delete(set, queue[0])
- set[nums[i]] = struct{}{}
- queue = queue[1:]
- }
- }
- return false
- }
|