Найти результирующий массив после применения свертки к данному массиву с использованием заданной маски

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

Даны два массива arr[] , содержащие N целых чисел, и маска[] нечетного размера. Задача состоит в том, чтобы заменить каждый элемент массива значением, вычисленным путем выполнения той же свертки над массивом.

Примеры:

Input: arr[] = {9, 7, 3, 9, 1, 8, 11}, mask[]={1, 2, -1}
Output: 11 20 4 20 3 6 30 
Explanation: Following are the operations performed in the given array arr[]
For index 0: 0*1 + 9*2 + 7*-1 = 11
For index 1: 9*1 + 7*2 + 3*-1 = 20
For index 2: 7*1 + 3*2 + 9*-1 = 4
For index 3: 3*1 + 9*2 + 1*-1 = 20
For index 4: 9*1 + 1*2 + 8*-1 = 3
For index 5: 1*1 + 8*2 + 11*-1 = 6
For index 6: 8*1 + 11*2 + 0*-1 = 30

Input: arr[] = {13, 26, 35, 41, 23, 18, 38}, mask[]={-1, 3, 5, -3, 1} 
Output: 240 117 140 233 187 4 221 

Подход: Самый простой подход к решению этой проблемы — использование вложенных циклов . Внешний цикл будет проходить по массиву слева направо, т. е. от i = 0 до i < N , а внутренний цикл будет проходить по маске от индекса i – K/2 до индекса i + K/2 и вычислять свертку их. Наконец, распечатайте вывод.

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N*K)
Вспомогательное пространство: O(1)