第一题 x的平方根

题目

二分查找

对于算术平方根的计算,咱们能够应用二分查找一直放大边界,最终找到其算术平方根

具体代码

func mySqrt(x int) int {    l, r := 0, x    ans := -1    for l <= r {        mid :=  (r + l) / 2        if mid * mid <= x {            ans = mid            l = mid + 1        } else {            r = mid - 1        }    }    return ans}

成果如下

牛顿迭代法

代码

func mySqrt(x int) int {    if x == 0 {        return 0    }    C, x0 := float64(x), float64(x)    for {        xi := 0.5 * (x0 + C/x0)        if math.Abs(x0 - xi) < 1e-7 {            break        }        x0 = xi    }    return int(x0)}

复杂度剖析

工夫复杂度:O(logx)。

空间复杂度:O(1)。

第二题 两数相除

题目

思路

https://leetcode-cn.com/probl...

ovo