Number of Squareful Arrays LeetCode solution in Java

1
class Solution {
2
int count;
3

4
public int numSquarefulPerms(int[] nums) {
5
int n = nums.length;
6
if (n < 2) return count;
7
backtrack(nums, n, 0);
8
return count;
9
}
10

11
void backtrack(int[] nums, int n, int start) {
12
if (start == n) {
13
count++;
14
}
15
Set<Integer> set = new HashSet<>();
16
for (int i = start; i < n; i++) {
17
if (set.contains(nums[i])) continue;
18
swap(nums, start, i);
19
if (start == 0 || isPerfectSq(nums[start], nums[start - 1])) backtrack(nums, n, start + 1);
20
swap(nums, start, i);
21
set.add(nums[i]);
22
}
23
}
24

25
void swap(int[] A, int a, int b) {
26
int temp = A[a];
27
A[a] = A[b];
28
A[b] = temp;
29
}
30

31
boolean isPerfectSq(int a, int b) {
32
int x = a + b;
33
double sqrt = Math.sqrt(x);
34
return (sqrt - (int) sqrt) == 0 ? true : false;
35
}
36
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0