Сложность: medium
Массив nums длины n красив, если: nums является перестановкой целых чисел в диапазоне [1, n]. Для каждого 0 <= i < j < n не существует индекса k с i < k < j, где 2 * nums[k] == nums[i] + nums[j]. Задано целое число n, верните любой красивый массив nums длины n. Для заданного n будет хотя бы один правильный ответ.
Пример:
Input: n = 4
Output: [2,1,4,3]
👨💻 Алгоритм:
1⃣Использовать рекурсивный метод для создания красивого массива.
2⃣Если длина массива равна 1, вернуть массив [1].
Разделить n на четные и нечетные индексы и создать массивы для них.
3⃣Объединить массивы, созданные для четных и нечетных индексов, в результирующий массив.
😎 Решение:
function beautifulArray($n) {
return construct($n);
}
function construct($n) {
if ($n == 1) return [1];
$odd = array_map(fn($x) => 2 * $x - 1, construct(($n + 1) / 2));
$even = array_map(fn($x) => 2 * $x, construct($n / 2));
return array_merge($odd, $even);
}Ставь 👍 и забирай 📚 Базу знаний