分治,将偶数和奇数分开就好了
class Solution {
public int[] beautifulArray(int N) {
if(N==1)return new int[]{1};
else if(N ==2)return new int[]{2,1};
int [] ret = new int[N];
int mid = N/2;
int r=mid;
if((N & 1) == 1){
ret[mid] =1;
r = mid+1;
}
int[] left = beautifulArray(mid);
for(int i=0 ; i<left.length ; ++i)ret[i] = left[i]<<1;
int[] right = beautifulArray(mid);
if(r>mid)
for(int i=0 ; i<right.length ; ++i)ret[r+i] = right[i]*2+1;
else for(int i=0 ; i<right.length ; ++i)ret[r+i] = right[i]*2 -1;
return ret;
}
}