Есть несколько проблем с вашим кодом.Самое главное, что вы перебираете список изменений частоты только один раз, хотя даже в описании задачи упоминается, что вам может потребоваться сделать это несколько раз.Решение состоит в том, чтобы прочитать файл изменений в массив, а затем создать второй массив с суммами (как вы делаете это сейчас), применив первый несколько раз, начиная с начальной частоты = 0. Кроме того, массив суммы после инициализации должен быть вставленЭлемент 0 в начале, который является начальной частотой.
Я не знаю ваш формат входного файла, поэтому вам нужно проверить, что он читается, как ожидалось.Тем не менее, я проверил 2-ю часть вашего кода (двойной цикл) с массивом list
, инициализированным обеими последовательностями сумм +1, -1 и +3, +3, +4, -2, -4 (с повторением последнегодважды), и все работало нормально.
Два других изменения, которые следует учитывать:
- Не используйте
val == 0
в качестве условия остановки цикла;если 0 является повторяющимся значением, цикл будет повторяться по всем элементам.Вместо этого рассмотрите возможность использования флага (например, булевой переменной) для выхода из внутреннего и внешнего циклов. - Нет необходимости «рассматривать цикл как круговой», достаточно сравнить текущий элемент со всеми будущими элементами.
Надеюсь, что поможет.