zoukankan      html  css  js  c++  java
  • 第69题:x的平方根

    一. 问题描述

    实现 int sqrt(int x) 函数。

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

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

    示例 1:

    输入: 4

    输出: 2

    示例 2:

    输入: 8

    输出: 2

    说明: 8 的平方根是 2.82842...,

         由于返回类型是整数,小数部分将被舍去。

    二. 解题思路

    本题主要采用二分查找来查找x的平方根m。这道题是比较简单的,但是要注意在进行二分查找时,对其初始值要有所限定,其最大值不能大于int类型的最大值2147483647。

    步骤一:设置二分查找法的起点visit_first和终点visit_second。

    步骤二:利用二分查找法进行查找(原理就不说了),其中最大值的限制条件要注意。

    三. 执行结果

    执行用时 :2 ms, 在所有 java 提交中击败了93.59%的用户

    内存消耗 :33.7 MB, 在所有 java 提交中击败了75.11%的用户

    四. Java代码

    class Solution {
        public int mySqrt(int x) {
            int visit_first=0;
                int visit_second=((x)/2)+1;
                if(x>=Integer.MAX_VALUE||visit_second>Math.sqrt(2147483647))
                {
                 visit_second=(int)Math.sqrt(2147483647);
                }
                while(true)
                {
                int    m=(visit_second+visit_first)/2;
                    if((m*m)==x||((m*m)<x&&(m+1)>(int)Math.sqrt(2147483647)))
                    {
                        return m;
                    }
                    if((m*m)>x&&(m-1)*(m-1)<x)
                    {
                        return m-1;
                    }
                    if((m*m)<x)
                    {
                        visit_first=m+1;
                        
                    }
                    else
                    {
                        visit_second=m-1;
                    }
         
                }
        }
    }
  • 相关阅读:
    从服务器上下载下来的代码,部署到本地时,Url自动带www前缀
    个人说明
    名词解释
    Bandizip-解压缩软件
    uTools-工具插件集
    Geek-软件卸载工具
    Microsoft商店软件推荐
    Docker入门第九章
    Docker入门第八章
    IDM-下载工具
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/11676218.html
Copyright © 2011-2022 走看看