Сложность: medium
Дано целое число length и массив updates, где updates[i] = [startIdxi, endIdxi, inci].
У вас есть массив arr длины length, заполненный нулями. Вам нужно применить некоторые операции к arr. В i-й операции следует увеличить все элементы arr[startIdxi], arr[startIdxi + 1], ..., arr[endIdxi] на inci.
Верните arr после применения всех обновлений.
Пример:
Input: length = 5, updates = [[1,3,2],[2,4,3],[0,2,-2]]
Output: [-2,0,3,5,3]
👨💻 Алгоритм:
1⃣Для каждого обновления (start, end, val) выполните две операции:
Увеличьте значение в позиции start на val: arr[start] = arr[start] + val.
Уменьшите значение в позиции end + 1 на val: arr[end + 1] = arr[end + 1] - val.
2⃣Примените конечное преобразование: вычислите кумулятивную сумму всего массива (с индексами, начиная с 0).
3⃣Верните обновленный массив arr.
😎 Решение:
function getModifiedArray(length, updates) {
let result = new Array(length).fill(0);
for (let update of updates) {
let [start, end, val] = update;
result[start] += val;
if (end + 1 < length) {
result[end + 1] -= val;
}
}
for (let i = 1; i < length; i++) {
result[i] += result[i - 1];
}
return result;
}Ставь 👍 и забирай 📚 Базу знаний
