第一题 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