侧边栏壁纸
博主头像
阿里灰太狼博主等级

You have to believe in yourself . That's the secret of success.

  • 累计撰写 104 篇文章
  • 累计创建 50 个标签
  • 累计收到 12 条评论

目 录CONTENT

文章目录

leetcode-69. Sqrt(x)

阿里灰太狼
2021-11-19 / 0 评论 / 0 点赞 / 244 阅读 / 481 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-11-19,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

cj58.png

JAVA解法

class Solution {
    public int mySqrt(int x) {
        // x 为0,无法开根号
        if (x == 0) {
            return 0;
        }
        // 根号 x 等于 e 的 1/2*log(x) 次方
        int ans = (int) Math.exp(0.5 * Math.log(x));
        /**
            由于计算机无法存储浮点数的精确值,
            而指数函数和对数函数的参数和返回值均为浮点数,
            因此运算过程中会存在误差。
            因此在得到结果的整数部分 ans 后,
            我们应当找出 ans 与 ans+1 中哪一个是真正的答案。
         */ 
        return (long) (ans + 1) * (ans + 1) <= x ? ans + 1 : ans;
    }
}

leetcode原题: 69. Sqrt(x)

解法分析

首先要判断传进来的值是否为 0,0 是无法开根号的。之后对开根号转换成根号 x 等于 e 的 1/2*log(x) 次方的形式,并强制转换为 int 类型,即可得到答案。

但是在放回的时候由于计算机无法存储浮点数的精确值,而指数函数和对数函数的参数和返回值均为浮点数,因此运算过程中会存在误差。因此在得到结果的整数部分 ans 后,我们应当找出 ans 与 ans+1 中哪一个是真正的答案。

0

评论区