Number of Squareful Arrays LeetCode solution in C++

1
class Solution {
2
public:
3
int numSquarefulPerms(vector<int> &nums) {
4
sort(nums.begin(), nums.end());
5
int ans = 0;
6
solve(nums, 0, ans);
7
return ans;
8
}
9
void solve(vector<int> nums, int idx, int &ans) {
10
if (idx >= nums.size()) {
11
++ans;
12
}
13
for (int i = idx; i < nums.size(); i++) {
14
if (i > idx && nums[i] == nums[idx]) continue;
15
swap(nums[i], nums[idx]);
16
if (idx == 0 || (idx > 0 && isSquare(nums[idx] + nums[idx - 1]))) solve(nums, idx + 1, ans);
17
}
18
}
19
bool isSquare(int n) {
20
int temp = sqrt(n);
21
return temp * temp == n;
22
}
23
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0