LeetCode 367. 有效的完全平方数
题目描述
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
输入:num = 16
输出:true
原题连接
链接::https://leetcode-cn.com/problems/valid-perfect-square
一、基础框架
class Solution {
public boolean isPerfectSquare(int num) {
}
}
二、解题报告
1.思路分析
1、首先想到Math.sqrt();,但是不允许使用库函数所以舍弃
2、想到 x^2 = num 从1 到num 进行二分查找
2.时间复杂度
3.代码示例
tips:
class Solution {
public boolean isPerfectSquare(int num) {
int left = 0,right = num;
while(left <= right){
int mid = (right - left) / 2 + left;
long square = (long) mid * mid;
if(square < num){
left = mid +1;
}else if(square > num){
right = mid - 1;
}else{
return true;
}
}
return false;
}
}
2.知识点