Open carloscn opened 1 year ago
2的平方数在二进制的表现是: 1 : 1 2: 10 4: 100 8: 1000 ... 1024: 100 0000 0000
只有一个1,所以判断只有一个1即可。
static int32_t is_square(int64_t e)
{
size_t count = 0;
size_t len = sizeof(int64_t) * 8;
while (-- len) {
count += (e >> len) & 0x1U;
if (count > 1) {
return false;
}
}
return true;
}
问题描述
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。 进阶:不要 使用任何内置的库函数,如 sqrt 。
示例 1: 输入:num = 16 输出:true
示例 2: 输入:num = 14 输出:false
提示: 1 <= num <= 2^31 - 1 通过次数199,699提交次数445,257
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/valid-perfect-square