演算法 漂亮陣列 c 分治

2021-10-12 05:50:12 字數 544 閱讀 4219

演算法思路:

漂亮陣列有以下的性質:

(1)a是乙個漂亮陣列,如果對a中所有元素新增乙個常數,那麼a還是乙個漂亮陣列。

(2)a是乙個漂亮陣列,如果對a中所有元素乘以乙個常數,那麼a還是乙個漂亮陣列。

(3) a是乙個奇數構成的漂亮陣列,b是乙個偶數構成的漂亮陣列,那麼a+b也是乙個漂亮陣列.

比如:+=也是乙個漂亮陣列。

所以我們假設乙個的陣列是漂亮陣列,可以通過下面的方式構造漂亮陣列:

對中所有的數乘以2-1,構成乙個奇數漂亮陣列a。如,可以得到

對中所有的數乘以2,構成乙個偶數漂亮陣列b,如, 可以得到

a+b構成了的漂亮陣列。+=

以n=10為例,分治如下:

**實現:

class solution

vector f(int n)

if (n != 1)

for (auto x : f(n/2))

}else

mp[n] = ans;

return ans;}};

時間複雜度o(n)

分治演算法 最大子陣列

該演算法核心思想 任何連續最大子陣列必然處於以下三種情況 子陣列完全落在中點左邊 子陣列完全落在中點右邊 子陣列橫跨中點 所以先求出左邊最大的子陣列,再找出右邊的,然後從中間找。比較大小即可。中間點的最大子陣列容易確定,左右兩邊的無法確定,所以需要遞迴,把左右兩邊的陣列分解到只剩乙個元素時就能輕鬆確...

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

漂亮陣列 Beautiful Array

2019 04 06 16 09 56 問題描述 問題求解 本題還是挺有難度的,主要是要考慮好如何去進行構造。首先考慮到2 a i a j a k 那麼j,k就必須是同奇同偶,否則它們的和必為奇數,顯然等式不成立。那麼如果我們將n的陣列分成兩個部分,一部分全奇數,一部分全偶數,並且這兩個部分是bea...