leetcode 932 漂亮陣列

2022-07-20 12:54:13 字數 1125 閱讀 2353

1

"""2

思路:3

1、如何滿足漂亮陣列?

4奇數 + 偶數 = 奇數 =》將陣列,拆分為兩部分:奇數漂亮陣列 + 偶數漂亮陣列56

2、如何獲取 奇數漂亮陣列 和 偶數漂亮陣列?

7舉例:求n=7的漂亮陣列

8獲取奇數陣列:1 3 5 7 偶數陣列:2 4 6910

由於:11

如果乙個陣列是漂亮陣列,則對該陣列所有元素進行 【乘以同乙個值】或者【加/減 同乙個值】,則獲得的陣列仍為漂亮陣列

12故:

13求 1 3 5 7 的漂亮陣列 《=》 求 1 2 3 4 的漂亮陣列,在對陣列元素進行 2x-1,即可

14求 2 4 6 的漂亮陣列 《=》 求 1 2 3 的漂亮陣列,再對陣列元素進行 2x,即可

1516

綜上,求 「n=7的漂亮陣列」,轉換為了 「求n=4的漂亮陣列」 和 「求n=3的漂亮陣列」。

1718

分治 遞迴 可解該題。

19"""

2021

class

solution:

22def

__init__

(self):

23 self.n_to_ans =none

2425

def beautifularray(self, n: int) ->list[int]:

26 self.n_to_ans =

27self.solve(n)

28return

self.n_to_ans[n]

2930

defsolve(self, n):

31if n not

inself.n_to_ans:

32 odd_ls = self.solve((n+1)//2)

33 even_ls = self.solve(n//2)

34 self.n_to_ans[n] = [(2*i-1) for i in odd_ls] + [(2*i) for i in

even_ls]

35return self.n_to_ans[n]

Leetcode932 漂亮陣列

題目 解題思路 使用遞迴的方法。由題目可知,給定乙個n,給出符合條件的排列。遞迴使大問題變成小問題,將n縮小,縮小到可以輕鬆解決的的大小,所以當n為1時,遞迴結束,返回1.如何將結果合併呢?我們知道當某個陣列排序符合條時,假設該陣列為a,那麼ka n也是符合條件的陣列,k是a的倍數,也就是說a的線性...

leetcode932 漂亮陣列

今天想找幾道分治的題目做做,有些題不用分治的思想做,想光找到直接規律真的有點難,但是分治思想也需要清晰的邏輯才能考慮清楚,還需要多加練習。對於某些固定的 n,如果陣列 a 是整數 1,2,n 組成的排列,使得 對於每個 i j,都不存在 k 滿足 i k j 使得 a k 2 a i a j 那麼陣...

932 漂亮陣列

對於某些固定的 n,如果陣列 a 是整數 1,2,n 組成的排列,使得 對於每個 i j,都不存在 k 滿足 i k j 使得 a k 2 a i a j 那麼陣列 a 是漂亮陣列。給定 n,返回任意漂亮陣列 a 保證存在乙個 解題思路 關於漂亮陣列的性質 首先,不存在 k 滿足 i k j 使得 ...