LintCode:x的平方根

来源:互联网 发布:云计算对企业的影响 编辑:程序博客网 时间:2024/04/27 14:30

LintCode:x的平方根

二分法

Python

class Solution:    """    @param x: An integer    @return: The sqrt of x    """    def sqrt(self, x):        # write your code here        m = x        while m * m != x:            while m * m > x:                m = m / 2                n = 2 * m + 1            while m * m < x:                if m * m  <= x and (m + 1) * (m + 1) >= x:                    if(m + 1) * (m + 1) == x:                        return m + 1                    else:                        return m                m = (n + m) / 2        return m

Java

class Solution {    /**     * @param x: An integer     * @return: The sqrt of x     */    public int sqrt(int x) {        // write your code here        long m = x;        while(m * m  != x){            while(m * m > x){                m = m / 2 + 1;            }            long n = 2 * m;            while(m * m < x){                if (m * m <= x && (m + 1) * (m + 1) >= x){                    if((m+1) * (m+1) == x){                        return (int)m+1;                    }                    else{                        return (int)m;                    }                }                m = (m + n) / 2;            }        }        return (int) m;    }}
0 0
原创粉丝点击