367. 有效的完全平方数
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
示例 1:
输入:num = 16
输出:true
示例 2:
输入:num = 14
输出:false
解题思路:
这个题跟上一道题的找平方数是一样的,甚至更加简单,只需要判断即可.利用二分查找在数间查找到有相乘等于num的数时,就返回true,如果没有就返回false;
代码:
class Solution {
public:
bool isPerfectSquare(int num) {
if(num == 0 || num == 1)
return true;
int left = 0;
int right = num / 2;
long index;
while (left <= right)
{
index = (left + right) / 2;
if (index * index == num )
return true;
else if (index * index < num )
left = index + 1;
else if (index * index > num )
right = index - 1;
}
return false;
}
};
运行结果:
总结:
题目总体简单,想到用二分法即可完成,不过是我第二次运行时间0ms,也挺开心.