完全平方是指用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数,而一个完全平方数的项有两个。
代码
解题思路:把当前的数压入队列,求它的平方根然后对余数继续压入队列。如果余数为0,则表示已经得出了这个数的完全平方数的数量。
class PrefectSquare
{
public:
int numSquares(int n) {
queue<int> q;
q.push(n);
int result = -1;
while (!q.empty()) {
++result;
int size = q.size();
for (int i = 0; i < size; ++i) {
int curr = q.front();
q.pop();
if (0 == curr) {
return result;
}
for (int j = floor(sqrt(curr)); j >= 1; --j) {
int val = curr - j * j;
q.push(val);
}
}
}
return result;
}
};
其实,根据