367. 有效的完全平方数
给定一个 正整数 num
,编写一个函数,如果 num
是一个完全平方数,则返回 true
,否则返回 false
。
进阶:不要 使用任何内置的库函数,如 sqrt 。
示例 1:
输入:num = 16
输出:true
示例 2:
输入:num = 14
输出:false
提示:
- 1 <= num <= 231- 1
题解
思路:使用sqrt函数
class Solution {
public boolean isPerfectSquare(int num) {
double r=Math.sqrt(num);
// return r==(int)r?true:false;
return r==(int)r;
}
}
如果是判断一个数是否是2的幂次方
思路
2的幂次方的二进制是前面一个1后面都是0
2的幂次方-1的二进制是前面一个0后面都是1
二者与运算就会得到0
class Solution {
public boolean isPerfectSquare(int num) {
int n=num&num-1;
//return n==0?true:false;
return n==0;
}
}