Сложность: easy
Дан массив целых чисел nums и целое число k. Верните true, если в массиве существуют два различных индекса i и j, такие что nums[i] == nums[j] и abs(i - j) <= k.
Пример:
Input: nums = [1,2,3,1,2,3], k = 2
Output: false
👨💻 Алгоритм:
1⃣Создайте пустое множество set.
2⃣Пройдитесь по массиву nums:
Если текущий элемент уже есть в множестве, верните true.
Добавьте текущий элемент в множество.
Если размер множества больше k, удалите элемент, который был добавлен k шагов назад.
3⃣Если не найдены дублирующиеся элементы на расстоянии k или менее, верните false.
😎 Решение:
class Solution {
func containsNearbyDuplicate(_ nums: [Int], _ k: Int) -> Bool {
var set = Set<Int>()
for i in 0..<nums.count {
if set.contains(nums[i]) {
return true
}
set.insert(nums[i])
if set.count > k {
set.remove(nums[i - k])
}
}
return false
}
}Ставь 👍 и забирай 📚 Базу знаний