首页 > 其他 > 详细

[leetcode] Sqrt(x)

时间:2014-07-07 23:48:29      阅读:444      评论:0      收藏:0      [点我收藏+]

Implement int sqrt(int x).

Compute and return the square root of x.

https://oj.leetcode.com/problems/sqrtx/

 

思路1:一个数的平方根肯定在0~x/2+1之间,因此在这个范围内二分查找。

  注意:

  •   中间结果用long,否则mid*mid溢出。
  •   对于搜索不到的情况(找的到其实也是),返回平方根的floor值。

思路2:牛顿迭代法。

 

bubuko.com,布布扣
public class Solution {
    public int sqrt(int x) {
        if (x < 0)
            return -1;
        long right = x / 2 + 1;
        long left = 0;
        long mid;
        while (left <= right) {
            mid = (left + right) / 2;
            if (x < mid * mid)
                right = mid - 1;
            else if (x > mid * mid)
                left = mid + 1;
            else
                return (int) mid;
        }
        return (int) right;

    }

    public static void main(String[] args) {
         System.out.println(new Solution().sqrt(0));
         System.out.println(new Solution().sqrt(1));
         System.out.println(new Solution().sqrt(2));
         System.out.println(new Solution().sqrt(3));
         System.out.println(new Solution().sqrt(4));
        System.out.println(new Solution().sqrt(2147483647));
    }
}
View Code

 

参考:

http://blog.csdn.net/linhuanmars/article/details/20089131

http://www.cnblogs.com/AnnieKim/archive/2013/04/18/3028607.html

 

 

[leetcode] Sqrt(x),布布扣,bubuko.com

[leetcode] Sqrt(x)

原文:http://www.cnblogs.com/jdflyfly/p/3812726.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!