题意:给你一个正数,判断这个正数是不是完全平方数。
解题思路:“完全平方数” = 1 + 3 + 5 + 7 + 9 +…
1^2 = 1;
2^2 = 1 + 3 = (1 + 3) / 2 = 2 + 2;
3^2 = 1 + 3 + 5 = (1 + 5)/2 + 3 = 3 + 3 + 3;
4^2 = 1 + 3 + 5 + 7 = (1 + 7)/2 + (3+5)/2 = 4 + 4 + 4 + 4;
…
规律就是n的平方,公式右边就有n个数相加,两端平均正好等于这个数的2倍,求和结果就是n^2;
class Solution {
public:
bool isPerfectSquare(int num) {
int i = 1;
while(num > 0)
{
num -= i;
i += 2;
}
return num == 0;
}
};