The solution uses a set to store the squares of integers from 1 to n. It then iterates through all pairs of integers (i, j) such that 1 <= i < j <= n, and checks if the sum of their squares, i*i + j*j, is present in the set. If it is, it increments the count of triples by 2, considering both (i, j, sqrt(i*i + j*j)) and (j, i, sqrt(i*i + j*j)) as valid triples.
时间复杂度: O(n^2)
空间复杂度: O(n)
class Solution:
def countTriples(self, n: int) -> int:
cnt = 0
s = set([i * i for i in range(1, n + 1)])
for i in range(1, n - 1):
for j in range(i, n):
if i * i + j * j in s:
cnt += 2
return cnt