原题
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
Returns: True
Example 2:
Input: 14
Returns: False
题目分析
判断一个数是不是平方数,不能用内置的类库函数,如 sqrt
。思路:二分查找分别找出两个左右端点。
实现代码
public bool IsPerfectSquare(int num)
{
int low = 1, high = num;
while (low <= high)
{
long mid = (low + high) >> 1;
if (mid * mid == num)
{
return true;
}
else if (mid * mid < num)
{
low = (int)mid + 1;
}
else
{
high = (int)mid - 1;
}
}
return false;
}
时间复杂度O(logn)
leetcode-solution库
leetcode算法题目解决方案每天更新在github库中,欢迎感兴趣的朋友加入进来,也欢迎star,或pull request。https://github.com/jackzhenguo/leetcode-csharp