Нужно оптимизировать код на kotlin

Есть задача: https://www.codewars.com/kata/5ce399e0047a45001c853c2b/train/kotlin

Код, который я написал для её решения:

fun sumParts(ls: IntArray): IntArray {
        // your code
        var res = IntArray(size = ls.size + 1)

        for(i in ls.indices){
            var sum: Int = 0
            for (j in i until ls.size){
                sum += ls[j]
            }
            
            res[i] = sum
        }

        return res
    }

При проверки выскакивает следующая ситуация: введите сюда описание изображения

Грубо говоря, код работает, но при работе с большими данными, скорость его работы недостаточно велика. Я уже оптимизировал всё, что мог. Подскажите, пожалуйста, что ещё можно с этим сделать?


Ответы (2 шт):

Автор решения: MBo
  1. Посчитайте общую сумму
  2. Ещё раз пройдите по списку, отнимая очередной элемент от суммы и выводя результат
→ Ссылка
Автор решения: Кирилл Малышев

Вам не нужен вложенный цикл. Заполняйте res с конца. Каждый раз вам надо добавлять к сумме очередной элемент массива ls.

Что-то вроде такого:

var sum: Int = 0
for(i in ls.size - 1 downTo 0){
    res[i + 1] = sum
    sum += ls[i]
}
res[0] = sum
→ Ссылка