Beautiful Arrangement LeetCode solution in Java

1
class Solution {
2
int N;
3
Integer[][] memo;
4

5
public int countArrangement(int n) {
6
this.N = n;
7
memo = new Integer[n + 1][1 << N];
8
return permute(1, 0);
9
}
10

11
private int permute(int index, int mask) {
12
if (mask == (1 << N) - 1) return 1;
13
if (memo[index][mask] != null) return memo[index][mask];
14
int res = 0;
15
for (int i = 1; i <= N; i++) {
16
if ((mask & (1 << (i - 1))) == 0 && (index % i == 0 || i % index == 0)) {
17
mask |= (1 << (i - 1));
18
res += permute(index + 1, mask);
19
mask ^= (1 << (i - 1));
20
}
21
}
22
return memo[index][mask] = res;
23
}
24
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0