• 【leetcode-69】 x 的平方根


    (主要是越界问题)

    实现 int sqrt(int x) 函数。

    计算并返回 x 的平方根,其中 是非负整数。

    由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

    示例 1:

    输入: 4
    输出: 2
    

    示例 2:

    输入: 8
    输出: 2
    说明: 8 的平方根是 2.82842..., 
         由于返回类型是整数,小数部分将被舍去。

        public int mySqrt(int x) {
            if (x==1) {
                return 1;
            }
            for (int i=0;i<=x/2;i++) {
                if (i*i == x) {
                    return i;
                } else if (i*i<x && (i+1)*(i+1)>x) {
                    return i;
                }
            }
            return 1;
        }
    输入
    2147483647
    输出
    1
    预期结果
    46340

    错误原因是数组越界,int最大开根号也就46340.9,从0~46340之间找到n,n的平方小于x,n+1的平方大于x,就好

    改成下面这样

        public int mySqrt(int x) {
            if (x==1) {
                return 1;
            }
            for (int i=0;i<=x/2;i++) {
                if ((long)i*(long)i == x) {
                    return i;
                } else if ((long)i*(long)i<x && (long)(i+1)*(long)(i+1)>x) {
                    return i;
                }
            }
            return 1;
        }
    成功
    执行用时 : 51 ms, 在Sqrt(x)的Java提交中击败了20.67% 的用户
    内存消耗 : 32.8 MB, 在Sqrt(x)的Java提交中击败了31.49% 的用户
  • 相关阅读:
    js中 offset /client /scroll总结
    python的安装和环境配置
    git详解
    Xmind
    Linux 文件搜索命令
    Linux 文件和目录命令
    Linux 系统关机重启命令
    Linux系统信息命令
    Day07
    ModuleNotFoundError: No module named 'pysqlite2'
  • 原文地址:https://www.cnblogs.com/twoheads/p/10649021.html
Copyright © 2020-2023  润新知