leetcode932漂亮数组

    科技2022-07-14  123

    题目描述: 对于某些固定的 N,如果数组 A 是整数 1, 2, …, N 组成的排列,使得:

    对于每个 i < j,都不存在 k 满足 i < k < j 使得 A[k] * 2 = A[i] + A[j]。

    那么数组 A 是漂亮数组。

    给定 N,返回任意漂亮数组 A(保证存在一个)。

    思路: 例如n=8 1,2,3,4,5,6,7,8 分成1,3,5,7和2,4,6,8 然后再分成1,5和3,7和2,6和4,8 最后在合成一起

    代码如下:

    class Solution { public: vector<int> helper(const vector<int>& v){ if(v.size()==1) return v; vector<int>v1,v2; for(int i=0;i<v.size();i+=2){ v1.push_back(v[i]); } for(int i=1;i<v.size();i+=2){ v2.push_back(v[i]); } vector<int>res; v1=helper(v1); v2=helper(v2); for(int x:v1){ res.push_back(x); } for(int x:v2){ res.push_back(x); } return res; } vector<int> beautifulArray(int N) { vector<int>a; for(int i=1;i<=N;i++){ a.push_back(i); } return helper(a); } };
    Processed: 0.012, SQL: 8