-
题目链接 https://leetcode-cn.com/problems/beautiful-array/
-
题目描述
-
对于某些固定的
N
,如果数组A
是整数1, 2, ..., N
组成的排列,使得:对于每个
i < j
,都不存在k
满足i < k < j
使得A[k] * 2 = A[i] + A[j]
。那么数组
A
是漂亮数组。 -
输入:4 输出:[2,1,4,3]
示例 2:
输入:5 输出:[3,1,2,5,4]
-
-
解题思路
- 分治法:假设数组A是漂亮数组,那么[ 2 * i for i in A]. [2 * i - 1 for i in A].也是漂亮数组,并且一个为奇,一个为偶。所以从奇,偶两个数组中取两个值,一定没不能等于 2 * k.,所以[ 2 * i for i in A] + [2 * i - 1 for i in A] 漂亮数组
-
代码
- python
def beautifulArray(self, N: int) -> List[int]: res = [1] while len(res) < N: res = [2 * i for i in res] + [2 * i - 1 for i in res] return [i for i in res if i <= N]
- python
-
参考https://blog.youkuaiyun.com/fuxuemingzhu/article/details/83539773
leetcode 932. 漂亮数组
最新推荐文章于 2023-05-11 09:22:11 发布