69 Sqrt(x)

Implement int sqrt(int x).

Compute and return the square root of x.

x is guaranteed to be a non-negative integer.

Example 1:

Input: 4
Output: 2
Example 2:

Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since we want to return an integer, the decimal part will be truncated.

class Solution {
    public int mySqrt(int x) {
      long low = 0;  
        long high = x/2+1;//平方根的值按规律发现不会大于它的中值+1。这样每个查找就少了一次  
        long tmp;  
        long mid = 1;  
        while (low <= high)  
        {  
            mid = (low + high) / 2;  
            tmp = mid * mid;  
            if (tmp == x)  
                return (int)mid;  
            else if (tmp > x)  
                high = mid - 1;  
            else if (tmp < x)  
                low = mid + 1;  
        }  
        return (int)high;  
    }
}

二分法的应用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,348评论 0 33
  • 我们都在别人的故事里寻找自己的人生,在自己的人生里演绎他人的故事
    小一爸阅读 754评论 0 0
  • 第一章-文质彬彬 凌晨,夜正深。 一阵寒风吹过,不禁让人浑身都哆嗦一下,一道黑色人影从峭立的山崖上一节一节的攀缀下...
    故乡圆月明阅读 1,742评论 7 4
  • 早晨起来,外面烟雨迷蒙,让人感觉仿佛生活在江南水乡。这种天气最适合码字,自己生怕太阳出来,把那种想写的冲动蒸发掉。...
    静默心谷阅读 3,928评论 0 2
  • 最近忙着脱单的朋友很郁闷地跟我说,一个男生在空间里发了一条“恨不恨爱不爱”的说说,还直呼了她的名字。“我和他都四五...
    lily和小厚阅读 3,222评论 0 2