首页 > 其他 > 详细

lintcode141- Sqrt(x)- easy

时间:2017-09-26 13:28:59      阅读:268      评论:0      收藏:0      [点我收藏+]

Implement int sqrt(int x).

Compute and return the square root of x.

Example

sqrt(3) = 1

sqrt(4) = 2

sqrt(5) = 2

sqrt(10) = 3

Challenge 

O(log(x))

 

halfhalf二分法。思想一样,就是取mid后判断的是mid*mid和x的关系。注意用long类型避免乘法溢出。

 

public class Solution {
    /*
     * @param x: An integer
     * @return: The sqrt of x
     */
    public int sqrt(int x) {
        // write your code here
        if (x < 0){
            throw new IllegalArgumentException();
        }
        
        long start = 0;
        long end = x;
        
        while (start + 1 < end){
            long mid = start + (end - start) / 2;
            long mult = mid * mid;
            if (x < mult){
                end = mid;
            } else if (x == mult){
                return (int)mid;
            } else {
                start = mid;
            }
        }
        
        if (end * end == x){
            return (int)end;
        }
        
        return (int)start;
    }
}

 

lintcode141- Sqrt(x)- easy

原文:http://www.cnblogs.com/jasminemzy/p/7596241.html

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