Я не слишком глубоко изучил , но я могу сказать, что ваш код не будет делать то, что вы хотите.То, как вы работаете со скользящим окном, на самом деле не может найти все возможные комбинации последовательных цифр.
Похоже, что ваш код делает, двигая конечный индекс вперед, пока вы не достигнете желаемой суммы, илипопал в конец массива.Затем вы перемещаете стартовый индекс вперед с теми же ограничениями.Итак, в итоге вы получите окно, которое делает это:
[o - - - -]
[o o - - -]
[o - o - -]
[o - - o -]
[o - - - o]
[- o - - o]
[- - o - o]
[- - - o o]
[- - - - o]
Обратите внимание, что ни в каком случае ваше окно никогда не будет выглядеть так:
[- o - o -]
Так что если это произойдетСамое большое окно, которое складывается в желаемую сумму, ваш алгоритм никогда не найдет.Поэтому вам нужно работать над тем, чтобы ваш код попадал во все возможные окна.Самый очевидный способ сделать это с помощью вложенного цикла.Вы можете сдвинуть конечный индекс до конца, а затем увеличить начальный индекс на единицу, сбросить сумму и снова переместить конечный индекс из этой новой начальной точки в конец.Повторите это для всех возможных начальных индексов, и это должно охватывать каждое отдельное окно в массиве.