Сократить заданный массив, заменив подмассивы длины не менее 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 .
- Если текущий элемент нечетный, проверьте, больше или равна ли длина temp K .
- После завершения цикла вектор ans содержит окончательный ответ.
Ниже приведена реализация вышеуказанного подхода:
Сложность времени: НА)
Вспомогательное пространство: O(N)