367.快速的完全立方数(javascript)367.ValidPerfectSquare
原创给定一个 正整数 num ,编写函数if。 num 是一个完整的平方数,返回 true ,否则返回。 false 。
高级:不要 使用任何内置库函数,例如。 sqrt 。
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Follow up: Do not use any built-in library function such as sqrt.
示例 1:
输入:num = 16
输出:true
示例 2:
输入:num = 14
输出:false
二分查找
思想和算法
考虑使用二分法查找来优化方法2中的搜索过程 num 是正整数,因此如果是正整数 x 满足 x*x=num,则 x 一定满足 11≤x≤num。所以我们可以 1 和 num 作为二进制查找搜索间隔的初始边界。
细节
因为我们正在移动左边界 left 右侧边界right 新的搜索间隔将不包含正在检查的下标。mid,所以搜索带之间的边界总是我们没有检查过的。因此,当left=right 当我们还需要检查时 mid=(left+right)/2。
var isPerfectSquare = function (num) {
let left = 1,right = num
while (left <= right) {
let mid = Math.floor((left + right) / 2)
let midSum = mid * mid
if (midSum > num) {
right = mid - 1
} else if (midSum < num) {
left = mid + 1
} else if (midSum == num) {
return true
}
}
return false
};
leetcode: https://leetcode-cn.com/problems/valid-perfect-square/
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123



