Сложность: 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⃣Объединить массивы, созданные для четных и нечетных индексов, в результирующий массив.
😎 Решение:
class Solution {
func beautifulArray(_ n: Int) -> [Int] {
func construct(_ n: Int) -> [Int] {
if n == 1 {
return [1]
}
let odd = construct((n + 1) / 2).map { 2 * $0 - 1 }
let even = construct(n / 2).map { 2 * $0 }
return odd + even
}
return construct(n)
}
}Ставь 👍 и забирай 📚 Базу знаний