【golang】leetcode中级-x的平方根&两数相除&分数到小数

第一题 x的平方根

题目

【golang】leetcode中级-x的平方根&两数相除&分数到小数_第1张图片

二分查找

对于算术平方根的计算,我们可以使用二分查找不断缩小边界,最终找到其算术平方根

具体代码

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
}

效果如下

【golang】leetcode中级-x的平方根&两数相除&分数到小数_第2张图片

牛顿迭代法

【golang】leetcode中级-x的平方根&两数相除&分数到小数_第3张图片

【golang】leetcode中级-x的平方根&两数相除&分数到小数_第4张图片

代码

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)。

第二题 两数相除

题目

【golang】leetcode中级-x的平方根&两数相除&分数到小数_第5张图片

思路

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

ovo

你可能感兴趣的:(golang)