有效的完全平方数
一、题目描述
给定一个正整数num,编写一个函数,如果num是一个完全平方数,则返回一个true,否则则返回false。
示例1
输入:num = 16
输出:true
示例2
输入:num = 14
输出:false
二、解题思路
将1到num的所有数,全部平方在和num相比较,相同则num是完全平方数,不相同且当平方大于num时,说明不是平方数。
三、解题方法
方法1:(暴力法)
遍历所有数,在找到和num相等的数。
代码实现:
class Solution {
public boolean isPerfectSquare(int num) {
long x = 1;
long sqrt = 1;
while(sqrt <= num){
if( sqrt == num){
return true;
}
x++;
sqrt = x * x;
}
return false;
}
}
方法2:(二分法)
使用二分法去找到和和num相等的平方数。
代码实现
class Solution {
public boolean isPerfectSquare(int num) {
long left = 0;
long right = num;
while(right >= left){
long mid = (right - left)/2 + left;
long sqrt = mid * mid;
if(sqrt > num){
right = mid -1;
}else if(sqrt < num){
left = mid+1;
}else{
return true;
}
}
return false;
}
}
标签:平方,mid,long,有效,num,完全,sqrt,left
From: https://www.cnblogs.com/zjjtt/p/16911824.html