美文网首页
LeetCode 069 x的平方根

LeetCode 069 x的平方根

作者: 洛珎 | 来源:发表于2019-12-10 18:19 被阅读0次

    题目:

    思路:1.暴力解法:因为忽略了非负数,直接 i*i <= x <=(i+1)*(i+1)

    2.二分法:

    首先判断是不是 0 或者 1 这两种特殊情况,如果是,则返回这两个数字。

    开始二分,设置左侧为 1,右侧范围为 x,形成闭区间 [1, x](数学表示,而不是数组)。

    输入 8,形成闭区间 [1, 8]。

    第一次遍历,Math.floor((1 + 8) / 2) 的值为 4,因为 4 * 4 = 16,该值大于 8,所以这时候闭区间变成:[1, 4]。

    第二次遍历,Math.floor((1 + 4) / 2) 的值为 2,因为 2 * 2 = 4,该值小于 8,所以这时候闭区间变成:[2, 4]。

    第三次遍历,Math.floor((1 + 4) / 2) 的值为 3,因为 3 * 3 = 9,该值大于 8,所以这时候闭区间变成:[2, 3]。

    此时,因为 2 === 3 - 1 && 2² <= 8 && 3² > 8,所以我们找到了最终值,即 2

    相关文章

      网友评论

          本文标题:LeetCode 069 x的平方根

          本文链接:https://www.haomeiwen.com/subject/zlgggctx.html