Создайте массив размера N, где MEX каждого подмассива размера K равен X

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

Даны три целых числа N , K и X . Задача состоит в том, чтобы создать массив размера N , где MEX каждого подмассива размера K равен X . Выведите построенные элементы массива, если это невозможно, выведите -1.

Примеры:

Input: N = 4, K = 3, X = 2
Output: 1 3 4 1
Explanation: Subarray of size K = 3 are: {1, 3, 4} and {3, 4, 1} and MEX of both the arrays are X = 2.
 

Input: N = 5, K = 4, X = 5
Output: 1 2 3 4 1
Explanation: Subarray of size K = 4 are: {1, 2, 3, 4} and {2, 3, 4, 1} and MEX of both the array is X = 5.
 

Подход: Решение проблемы основано на простом наблюдении. Если X не больше (K+1), то массив можно построить. В противном случае его невозможно построить. Выполните шаги, указанные ниже, чтобы решить проблему:

  • Инициализировать массив nums[] размера N .
  • Если значение X больше, чем K+1, массив невозможен.
  • Заполните первые K индексов, начиная с 1 , и каждый раз увеличивайте значение на 1 для остальных индексов. Пропустите значение X , когда оно должно быть заполнено.
  • После этого заполните остальные индексы, т.е. из K ≤ i ≤ N значением nums[i – K] .
  • Массив nums[] является обязательным массивом.

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


Временная сложность: НА)
Вспомогательное пространство: НА)