leetcode932 漂亮陣列

2021-10-09 16:46:22 字數 871 閱讀 5220

今天想找幾道分治的題目做做,有些題不用分治的思想做,想光找到直接規律真的有點難,但是分治思想也需要清晰的邏輯才能考慮清楚,還需要多加練習。

對於某些固定的 n,如果陣列 a 是整數 1, 2, …, n 組成的排列,使得:

對於每個 i < j,都不存在 k 滿足 i < k < j 使得 a[k] * 2 = a[i] + a[j]。

那麼陣列 a 是漂亮陣列。

給定 n,返回任意漂亮陣列 a(保證存在乙個)。

要不存在a[k] * 2 = a[i] + a[j]

等式左邊是偶數,若a[i]為奇數,a[j]為偶數則等式不成立

把所有奇數放在陣列的左邊,偶數放在陣列的右邊

分成兩部分【(n+1)/2個奇數】 和 【n/2個偶數】

當a[i] ,a[j]不在同一部分時顯然符合條件

再考慮a[i],a[j]在同一部分時

條件等式是線性的,通過線性變化

【(n+1)/2個奇數】對映到 【1到(n+1)/2】

【n/2個偶數】對映到【1到n/2】

原問題就分解可以為兩個規模減半的子問題

class

solution

int t =0;

//f(1)

for(

int x:

beautifularray

((n+1)

/2))

for(

int x:

beautifularray

(n/2))

return ans;

}}

Leetcode932 漂亮陣列

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

leetcode 932 漂亮陣列

1 2 思路 3 1 如何滿足漂亮陣列?4奇數 偶數 奇數 將陣列,拆分為兩部分 奇數漂亮陣列 偶數漂亮陣列56 2 如何獲取 奇數漂亮陣列 和 偶數漂亮陣列?7舉例 求n 7的漂亮陣列 8獲取奇數陣列 1 3 5 7 偶數陣列 2 4 6910 由於 11 如果乙個陣列是漂亮陣列,則對該陣列所有元...

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 使得 ...