Сократить заданный массив, заменив подмассивы длины не менее K, состоящие из четных чисел, на их длину

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

Учитывая массив arr[] длины N , задача состоит в том, чтобы заменить все подмассивы только четных элементов на их длину, если длина больше или равна K.

Примеры:

Input: arr[] = {3, 6, 10, 2, 7, 6, 4, 8}, K = 2
Output: 3 3 7 3
Explanation: There are two subarrays with consecutive even numbers {6, 10, 2} and {6, 4, 8}. 
So they are replaced by their length 3 and 3 respectively.

Input: arr[] = {4, 8, 3, 6, 8}, K=3
Output: 4 8 3 6 8
Explanation: No subarray exists for which length of consecutive even numbers is greater than or equal to 3.

Подход: выполните следующие шаги, чтобы решить эту проблему:

  • Создайте два вектора, один для хранения ответов и один для хранения последовательных четных чисел temp .
  • Если (К >= N) , то вернуть исходный вектор обр .
  • Теперь пройдитесь по массиву и для каждого элемента:
    • Если текущий элемент нечетный, проверьте, больше или равна ли длина temp K .
      • Если это так, то вставьте его длину в вектор ans .
      • В противном случае вставьте элементы temp в вектор ans .
      • Очистите вектор температуры.
    • Нажмите текущий элемент в векторе ответа .
    • Если текущий элемент четный, поместите его в temp .
  • После завершения цикла вектор ans содержит окончательный ответ.

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


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