记录一下四平方数和定理的解法
int numSquares(int n) {
while (0 == (n & 0x3)) {
n >>= 2;
}
if (7 == (n & 0x7)) {
return 4;
}
for (int i = sqrt(n); i > 0; --i) {
int j = sqrt(n - i * i);
if (i * i + j * j == n) {
if (0 == j) {
return 1;
}
return 2;
}
}
return 3;
}

本文介绍了一种解决四平方数和定理的算法,通过位运算判断特殊情况,并使用循环遍历找到满足条件的两个平方数之和,最终确定所需平方数的数量。
1318

被折叠的 条评论
为什么被折叠?



