Number of Ways to Reorder Array to Get Same BST LeetCode solution in Java

1
class Solution {
2
long[][] pascal;
3
private static final long mod = 1000000007;
4
long one=1;
5
public int numOfWays(int[] nums) {
6
ArrayList list = new ArrayList<>();
7
for (int n : nums) {
8
list.add(n);
9
}
10
formPascal(nums);
11
return (int)dfs(list)-1;
12
}
13

14
public long dfs(ArrayList list){
15
if(list.size()<=2) return 1;
16
ArrayList left=new ArrayList<>();
17
ArrayList right=new ArrayList<>();
18
int root=list.get(0);
19
for(int n:list){
20
if(nroot)
21
right.add(n);
22
}
23

24
return ((pascal[left.size()+right.size()][left.size()])*(dfs(left)%mod))%mod *(dfs(right)%mod);
25

26

27
}
28

29
private void formPascal(int[] nums){
30
pascal=new long[nums.length+1][];
31

32
for(int i=0;i<=nums.length;i++){
33
pascal[i]=new long[i+1];
34
Arrays.fill(pascal[i],one);
35
for(int j=1;j

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0