leetCode 932 Beautiful Array(分治)

版权声明:本文为博主原创文章,转载请在下面留个言就好 https://blog.csdn.net/Dylan_Frank/article/details/83504983

题目链接

LeetCode 932

分析

分治,将偶数和奇数分开就好了

code


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;
    }
}

猜你喜欢

转载自blog.csdn.net/Dylan_Frank/article/details/83504983