今天想找幾道分治的題目做做,有些題不用分治的思想做,想光找到直接規律真的有點難,但是分治思想也需要清晰的邏輯才能考慮清楚,還需要多加練習。
對於某些固定的 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 使得 ...