Минимизируйте арифметические операции, которые должны выполняться над соседними элементами данного массива, чтобы уменьшить его.

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

Учитывая массив arr[] , задача состоит в последовательном выполнении арифметических операций (+, -, *, /) над arr[] . Эти операции выполняются над соседними элементами до тех пор, пока размер массива не уменьшится до 1 . Наконец, верните уменьшенное значение и количество операций, необходимых для того же. Обратитесь к примерам для большей ясности.

Примеры:

Input: arr = {12, 10, 2, 9, 1, 2}
Output: Reduced Value: 10
Operations Performed:
+ : 2
– : 1
* : 1
/ : 1

Explanation:
Step 1: perform addition of consecutive element [22, 12, 11, 10, 3]
Step 2: perform subtraction of consecutive element [10, 1, 1, 7]
Step 3: perform multiplication of consecutive element[10, 1, 7]
Step 4: perform division of consecutive element [10, 0]
Step 5: Again perform addition of consecutive element[10]
 

Input: arr = {5, -2, -1, 2, 4, 5}
Output: Reduced Value: -3
Operations Performed:
+ : 2
– : 2
* : 1
/ : 1

Подход: поскольку в этой задаче мы должны выполнять операции, основанные на последовательности, такой как сначала сложение, затем вычитание, затем умножение и затем деление, поэтому мы можем использовать случай переключения для решения этой проблемы.

Инициализировать словарь, в котором оператор (+, -, *, /) является ключом, а 0 — значением. С помощью функций add, sub, mul и div будет выполняться работа над массивом. У него есть функция Operation, которая сопоставляет массив с функциями, основанными на значении c%4 , и возвращает уменьшенный массив. где c отслеживает количество выполненных операций. Словарь отслеживает каждую выполненную операцию, пока размер массива не уменьшится до 1 .
Выполните следующие шаги, чтобы решить данную проблему.

Шаг 1: Присвойте c значение 1 и объявите словарь d .

  • Шаг 2: если c%4==1 , то выполните операцию сложения над последовательным элементом, используя функцию Operation.
  • Шаг 3: если c%4==2 , выполните операцию вычитания для последовательного элемента, используя функцию Operation.
  • Шаг 4: если c%4==3 , то выполните операцию умножения на последовательный элемент, используя функцию Operation.
  • Шаг 5: если c%4==0 , то выполните операцию деления на последовательный элемент, используя функцию Operation.
  • Шаг 6: шаг 2 будет повторяться до тех пор, пока размер массива не станет равным 1 .
  • Шаг 7: d используется для отслеживания каждой выполненной операции.

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

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