Back to questions
Senior
2
Как двигать окно в алгоритме sliding window?
Companies where asked
Яндекс
Answer from AI
sobes.tech AI
В алгоритме sliding window окно двигается, чтобы эффективно обрабатывать подмножества данных без повторного обхода всего массива.
Основные способы сдвига окна:
-
Фиксированный размер окна:
- Окно сдвигается на один элемент вправо, удаляя самый левый элемент и добавляя следующий справа.
-
Переменный размер окна:
- Левый и правый указатели (границы окна) двигаются независимо, расширяя или сужая окно в зависимости от условий задачи.
Пример на Go для подсчёта суммы подмассива фиксированного размера:
func slidingWindowSum(arr []int, k int) []int {
if len(arr) < k {
return nil
}
sums := make([]int, 0, len(arr)-k+1)
windowSum := 0
for i := 0; i < k; i++ {
windowSum += arr[i]
}
sums = append(sums, windowSum)
for i := k; i < len(arr); i++ {
windowSum += arr[i] - arr[i-k]
sums = append(sums, windowSum)
}
return sums
}
Здесь окно двигается на один элемент, обновляя сумму за O(1) вместо пересчёта всей суммы.