1
# Runtime: 56 ms (Top 51.37%) | Memory: 13.9 MB (Top 48.63%)3
def isSquare(self, num):4
return int(num**0.5) ** 2 == num6
def makePermutation(self, used, vis, prev, n):13
if vis[i] == False and self.nums[i] not in tmp:14
tmp[self.nums[i]] = True15
if self.nums[i] in self.d[prev]:17
self.makePermutation(used + 1, vis, self.nums[i], n)20
def numSquarefulPerms(self, nums: List[int]) -> int:21
d = {x: {} for x in nums}24
for j in range(i + 1, n):25
if self.isSquare(nums[i] + nums[j]):26
d[nums[i]][nums[j]] = True27
d[nums[j]][nums[i]] = True38
self.makePermutation(1, vis, self.nums[i], n)