367. Valid Perfect Square
Easy
40096FavoriteShare
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
Example 2:
Input: 14
Output: false
这道题我用二分法来算的,二分法的边界和最后答案还是调整了一下,放到vs里单步调试了。
提交的时候发现1不能通过,在开头增加了特例1的判断,然后就AC了。补充一下,最后做判断时需要转换为long,不然会溢出。
代码如下:
class Solution {
public:
bool isPerfectSquare(int num) {
if(num==1)return true;
int L=0;
int R=num;
int mid;
while(L<R)
{
mid=L+(R-L)/2;
if(mid<num/mid)
{
L=mid+1;
}
else
{
R=mid;
}
}
if((long)L*L==(long)num) return true;
else return false;
}
};