题目:
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
class Solution {
public:
// 二分法的第一种写法
bool isPerfectSquare(int num)
{
// // // 不对不对不对 不对的解法
// // int res = exp(0.5 * log(num));
// // if(res * res == num) return true;
// // else return false;
/************************************************************************/
// 二分查找法
if(num <= 2) return true;
int left = 2, right = num;
while(left <= right)
{
int mid = left + (right - left) / 2;
if((long long)mid * mid > num) right = mid - 1;
else if((long long)mid * mid < num) left = mid + 1;
else return true;
}
if((long long)(left + 1) * (left + 1) == num) return true;
else return false;
}
};

该博客介绍了一个C++实现的函数,通过二分查找法来判断一个正整数是否为完全平方数。函数避免了使用内置的平方根函数,确保了算法的自给自足。在给定的代码中,首先尝试了错误的解决方案,然后用正确的二分查找法实现了功能。当输入数值小于等于2时,直接返回true,否则在搜索范围内逐步缩小,直到找到平方根或者确定输入不是完全平方数。
1044

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



