File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed
Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ class Solution {
3+ public int [] solution (long [] numbers ) {
4+ int [] answer = new int [numbers. length];
5+
6+ for (int i = 0 ; i < numbers. length; i++ ){
7+ answer[i] = isPossible(numbers[i]) ? 1 : 0 ;
8+ }
9+
10+ return answer;
11+ }
12+
13+ public boolean isPossible (long number ){
14+ String binary = Long . toBinaryString(number);
15+
16+ int height = 1 ;
17+ while ((1 << height) - 1 < binary. length()) {
18+ height++ ;
19+ }
20+ int treeSize = (1 << height) - 1 ;
21+
22+ StringBuilder sb = new StringBuilder ();
23+ for (int i = 0 ; i < treeSize - binary. length(); i++ ){
24+ sb. append(' 0' );
25+ }
26+ sb. append(binary);
27+
28+ return isValidTree(sb. toString(), 0 , treeSize - 1 );
29+ }
30+
31+ private boolean isValidTree (String tree , int start , int end ){
32+ if (start > end) return true ;
33+
34+ int mid = (start + end) / 2 ;
35+ char root = tree. charAt(mid);
36+
37+ if (root == ' 0' ){
38+ for (int i = start; i <= end; i++ ){
39+ if (tree. charAt(i) == ' 1' ) return false ;
40+ }
41+ }
42+
43+ return isValidTree(tree, start, mid - 1 ) &&
44+ isValidTree(tree, mid + 1 , end);
45+ }
46+ }
47+ ```
You can’t perform that action at this time.
0 commit comments