69. Sqrt(x)

Easy

Question

Implement int sqrt(int x).

Compute and return the square root of x, where x is guaranteed to be a non-negative integer.

Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.

Example 1:

Input: 4
Output: 2

Example 2:

Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since 
             the decimal part is truncated, 2 is returned.

Approach 1: Newton-Raphson Method

(https://en.wikipedia.org/wiki/Newton%27s_method#Square_root_of_a_number)

Find am\sqrt [ m ]{ a }:

Set xma=0x^m - a = 0 , x=amx =\sqrt [ m ]{ a }

x0=ax_0=a, xn+1=nnf(xm)f(xn)x_{ n+1 }=n_{ n }-\frac { f(x _ m)}{ f'(x_n) }

def mySqrt(self, x: int) -> int:
    if x == 0:
        return 0
    x0 = x
    error = float('inf')
    while (error >= 1):
        # use Newton's method
        x1 = x0 - (x0 * x0 - x) / (2 * x0)
        x0 = x1
        error = abs(x0 * x0 - x)
    return int(x0)
def mySqrt(x):
    l = 1
    r = x
    while (l <= r):
        m = (r + l ) // 2
        if m * m > x: 
            r = m - 1
        else:
            l = m + 1
    return r

Last updated