Уменьшить данный массив, заменив подмассивы со значениями меньше K их суммой

Опубликовано: 21 Сентября, 2022

Дан массив 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)