// 367 easy 有效的完全平方數
// 給定一個正整數 num,編寫一個函數,如果 num 是一個完全平方數,則返回 True,否則返回 False。
// 說明:不要使用任何內置的庫函數,如 sqrt。
//
// 示例 1:
// 輸入:16
// 輸出:True
// 示例 2:
// 輸入:14
// 輸出:False
/**
* @param {number} num
* @return {boolean}
*/
var isPerfectSquare = function(num) {
if (num <= 0) return false;
if (num === 1) return true;
for(let i = 2; i <= Math.floor(num / 2); i++){
if (i * i === num){
return true;
}
}
return false;
};
// 二分法
var isPerfectSquare2 = function(num) {
if (num <= 0) return false;
if (num === 1) return true;
let left = 2;
let right = Math.floor(num / 2);
let mid = Math.floor((right + left) / 2)
while(true){
if (left > right)return false;
if (mid * mid === num){ return true;}
else if (mid * mid > num){
right = mid - 1;
mid = Math.floor((right + left) / 2)
} else{
left = mid + 1;
mid = Math.floor((right + left) / 2)
}
}
};
console.log(isPerfectSquare2(16))