Вопрос неясен для меня, и поскольку я не могу комментировать для пояснения, я предполагаю два случая и отвечаю на оба сценария.
Сценарий 1: В вашем вопросе Сортировка означает то, что мы понимаем под сортировкой (по возрастанию или по убыванию):
В этом случае вам нечего делать, не проверяя, имеют ли последовательные элементы разность k1, k2 или k3.
Сценарий 2: В вашем вопросе Sorted означает перестановку заданных элементов массива таким образом, чтобы разница между последовательными элементами составляла k1, k2 или k3.
Пример: вход: [1, 2, 4, 5, 10], k1: 1, k2: 3, k3: 6
Выход: [1, 2, 5, 4, 10]
В этом случае это Гамильтонова задача поиска пути , и эту проблему можно решить с помощью DFS.Сначала построим граф из данного массива.Логика построения графика приведена ниже:
- Каждый индекс является узлом
- Два индекса (i, j) связаны, если abs (A [i] -A [j])k1, k2 или k3.
Следующим шагом является определение пути длины N со всеми N узлами в графе.
Сложность сценария 2:
Это NP-полная проблема.