前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode-69. Sqrt(x)

leetcode-69. Sqrt(x)

作者头像
灰太狼学Java
发布2022-06-17 10:05:25
5740
发布2022-06-17 10:05:25
举报
文章被收录于专栏:Java学习驿站

JAVA解法

代码语言:javascript
复制
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 中哪一个是真正的答案。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JAVA解法
  • 解法分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档