Найдите перестановку N чисел в диапазоне [1, N] так, чтобы K чисел имели значение, такое же, как их индекс
Даны положительное целое число N и целое число K , такое что 0 ≤ K ≤ N , задача состоит в том, чтобы найти любую перестановку A из [1, N] такую, что количество индексов, для которых A i = i , равно точно K ( основанному на 1 индексация ). Если такой перестановки не существует, выведите −1 .
Примеры:
Input: N = 3, K = 1
Output: 1 3 2
Explanation: Consider the permutation A = [1, 3, 2]. We have A1=1, A2=3 and A3=2.
So, this permutation has exactly 1 index such that Ai = i.Input: N = 2, K = 1
Output: -1
Explanation : There are total 2 permutations of [1, 2] which are [1, 2] and [2, 1].
There are 2 indices in [1, 2] and 0 indices in [2, 1] for which Ai = i holds true.
Thus, there doesn’t exist any permutation of [1, 2] with exactly 1 index i for which Ai=i holds true.
Подход: Задача может быть решена с использованием жадного подхода. Сначала зафиксируйте ровно K элементов по их индексам, а затем просто случайным образом разместите NK элементов в разных местах. Выполните следующие шаги, чтобы решить проблему:
- Как-то исправить K позиций
- Переместить оставшиеся номера NK
- Циклический сдвиг оставшегося элемента на единицу
Ниже приведена реализация вышеуказанного подхода:
Временная сложность : O(N)
Вспомогательное пространство : O(1)