力扣:367. 有效的完全平方数
难度 简单
题目描述:
给定一个 正整数
num
,编写一个函数,如果num
是一个完全平方数,则返回true
,否则返回false
。进阶:不要 使用任何内置的库函数,如
sqrt
。示例 1:
输入:num = 16 输出:true
示例 2:
输入:num = 14 输出:false
提示:
- \(1\) <=
num
<= \(2^{31} - 1\)来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-perfect-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
根据 \(\sum\limits^{n}\limits_{i=1}{\left(2i-1\right)}=n^2\) 可以进行暴力破解:
class Solution {
public:
bool isPerfectSquare(int num) {
for (int i = 1; num > 0; i += 2) {
num -= i;
}
return 0 == num;
}
};
用时和内存的情况是0ms/5.7MB,超过了100%/89.189%。
当然也可以二分查找 \(\sqrt{n}\) (就是在模拟),对结果进行检测。sqrt
函数