漂亮陣列 Beautiful Array

2022-08-11 09:30:12 字數 639 閱讀 5013

2019-04-06 16:09:56

問題描述:

問題求解:

本題還是挺有難度的,主要是要考慮好如何去進行構造。

首先考慮到2 * a[i] = a[j] + a[k],那麼j,k就必須是同奇同偶,否則它們的和必為奇數,顯然等式不成立。

那麼如果我們將n的陣列分成兩個部分,一部分全奇數,一部分全偶數,並且這兩個部分是beautiful array,那麼將它們concat一下,得到的也是beautiful array。

那麼如何得到這兩個部分呢?

這就需要一些數學的證明了,很容易證明得到漂亮陣列滿足以下的兩個性質。

得到這兩個性質後就可以進行構造了,從開始,每次得到和,顯然這兩個陣列是漂亮陣列,並且分別是奇數和偶數陣列,將它們concat之後就會得到長度更長的陣列,這樣就可以構造出來結果需要的陣列。

public int beautifularray(int n) 

return res.stream().maptoint(i -> i).toarray();

}

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

Leetcode932 漂亮陣列

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

T932 漂亮陣列

利用漂亮陣列的性質 因為要使乙個陣列為漂亮陣列 則就要滿足下列性質 1 對任意的對於每個 i j,都不存在 k 滿足 i k j 使得 a k 2 a i a j 觀察這個等式的左邊 a k 2 它一定是乙個偶數,要使這個等式不成立,則有一種情況一定可以滿足 即令等式右邊 a i a j 為乙個奇數...