Уменьшить данный массив, заменив подмассивы со значениями меньше K их суммой
Дан массив arr[] , состоящий из N положительных целых чисел и положительного целого числа K , задача состоит в том, чтобы обновить данный массив, заменив подмассивы, которые меньше K , суммой элементов в этом подмассиве.
Примеры:
Input: arr[] = {200, 6, 36, 612, 121, 66, 63, 39, 668, 108}, K = 100
Output: 200 42 612 121 168 668 108
Explanation:
The subarray arr[1, 2] i.e., {6, 36} have elements less than K(= 100). So, adding and insert them into array as 6 + 36 = 42.
The subarray arr[5, 7] i.e., {66, 63, 39} have elements less than K(= 100). So, adding and insert them into array as 66 + 63 + 39 = 168.
The modified array is {200, 42, 612, 121, 168, 668, 108}Input: arr[] = {50, 25, 90, 21, 30}, K = 95
Output: 216
Подход: данная проблема может быть решена путем обхода массива и отслеживания суммы, имеющей все элементы меньше K , и соответствующего обновления массива. Выполните следующие шаги, чтобы решить проблему:
- Инициализируйте переменную, скажем, сумму как 0 , которая хранит сумму подмассива.
- Инициализируйте вектор, скажем, res[] , в котором хранится обновленный массив arr[] , удовлетворяющий заданным критериям.
- Пройдите по данному массиву и, если значение arr[i] < K , обновите значение sum как sum + arr[i] . В противном случае обновите значение sum как 0 и добавьте значение sum и arr[i] к вектору res[] .
- После выполнения вышеуказанных шагов напечатайте значение, хранящееся в векторе res[] .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(N)
Вспомогательное пространство: O(1)