题目链接
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
;
}
}
转载请注明原文地址: https://www.6miu.com/read-5028974.html