Given a positive integer num, write a function which returns True if num is a perfect square else False.
Note: Do not use any built-in library function such as sqrt.
Example 1:
Input: 16 Output: true
分析:
判断一个数是不是有效的完全平方数,不能使用类似于sqrt已有的库函数。可以用二分法,先判断n的一半的平方是不是与之相等,若是,直接返回true,若比n小,则将左指针等于mid+1,否则令右指针等于mid-1。若最后left大于right,还没有找到n的正平方根,则返回false。
class Solution {
public:
bool isPerfectSquare(int num) {
if(num <= 0)
return false;
int left = 0;
int right = num;
while(left <= right)
{
long mid = left + (right-left)/2;
if(mid*mid == num)
return true;
else if(mid*mid < num)
left = mid+1;
else
right = mid-1;
}
return false;
}
};
继续阅读与本文标签相同的文章
-
Mybatis之discriminator(鉴别器)详解
2026-05-18栏目: 教程
-
前端进阶|第十一天 当全局变量,块变量,函数叫了同一个名字。。
2026-05-18栏目: 教程
-
Leetcode 542:01 矩阵 01 Matrix
2026-05-18栏目: 教程
-
LeetCode 733: 图像渲染 flood-fill
2026-05-18栏目: 教程
-
Spring Cloud Alibaba 实战(二) - 关于Spring Boot你不可不知道的实情
2026-05-18栏目: 教程
