Open azl397985856 opened 2 weeks ago
const beautifulArray = function (n) {
let arr = [];
arr.push(1);
while (arr.length < n) {
let tmp = [];
for (const i of arr) if (i * 2 - 1 <= n) tmp.push(i * 2 - 1);
for (const i of arr) if (i * 2 <= n) tmp.push(i * 2);
arr = tmp;
}
return arr;
};
时间复杂度:O(nlogn) 空间复杂度:O(n+logn)
class Solution:
def beautifulArray(self, n: int) -> List[int]:
res=[1]
while len(res)<n :
odd=[2*i-1 for i in res]
even=[2*i for i in res]
res=odd+even
return [i for i in res if i<=n]
class Solution {
public:
vector
class Solution:
def beautifulArray(self, n: int) -> List[int]:
memo = {1: [1]}
def f(N):
if N not in memo:
odds = f((N+1)//2)
evens = f(N//2)
memo[N] = [2*x-1 for x in odds] + [2*x for x in evens]
return memo[N]
return f(n)
932. 漂亮数组
入选理由
暂无
题目地址
https://leetcode-cn.com/problems/beautiful-array/
前置知识
题目描述
对于每个 i < j,都不存在 k 满足 i < k < j 使得 A[k] * 2 = A[i] + A[j]。
那么数组 A 是漂亮数组。
给定 N,返回任意漂亮数组 A(保证存在一个)。
示例 1:
输入:4 输出:[2,1,4,3]
示例 2:
输入:5 输出:[3,1,2,5,4]
提示:
1 <= N <= 1000