367、有效的完全平方数
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
示例 1:
输入:16
输出:True
示例 2:
输入:14
输出:False
难度:简单 题目地址:https://leetcode-cn.com/problems/valid-perfect-square/
1、C语言代码:
bool isPerfectSquare(int num){
for(long i = 0;i <= 46340;i++){
if(num == i * i)
return true;
}
return false;
}
解释: 暴力求解,这里也可以改成whlie。
知识点回顾: 无。
2、Java代码:
class Solution {
public boolean isPerfectSquare(int num) {
//解法:数学定理(1 + 3 + 5 + ... + (2n - 1) = n ^ 2)
int i = 1;
while(num > 0) {
num -= i;
i += 2;
}
return num == 0;
}
}
解释: 运用数学知识求解。
知识点回顾: 无。
3、Python代码:
class Solution:
def isPerfectSquare(self, num: int) -> bool:
if num <= 4:
return num == 1 or num == 4
l, r = 0, num
while l < r:
mid = (l+r) // 2
tmp = mid * mid
if tmp == num:
return True
elif tmp < num:
l = mid + 1
else:
r = mid
return False
解释: 二分法求解。
知识点回顾: 无
4、JavaScript代码:
/**
* @param {number} num
* @return {boolean}
*/
var isPerfectSquare = function(num) {
if(num == 1) return true;
let cur = parseInt(num/2);
while(!(cur*cur<=num&&(cur+1)*(cur+1)>num)){
cur = parseInt(cur-(cur*cur-num)/(2*cur))
}
return cur*cur == num;
};
解释: 牛顿迭代法求解。
知识点回顾: 无。