NOTE
求平方根
求平方根 的 LeetCode 解题笔记。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 题目描述
实现函数 int sqrt(int x). 计算并返回x的平方根(向下取整)
2. 思路
- 思路一
- 遍历[1,x]
- 当前数<目标值并且下一个数>目标值
- 思路二
- 二分
3. 实现
3.1. 遍历
func mySqrt(x int) int {
for i := 1; i <= x; i++ {
now := i * i
next := (i + 1) * (i + 1)
if now <= x && next > x {
return i
}
}
return 0
}
3.2. 二分
func mySqrt(x int) int {
left := 0
right := x
for left <= right {
mid := left + (right-left)>>1
current := mid * mid
next := (mid+1) * (mid+1)
if current <= x && next > x {
return mid
}else if current > x {
right = mid - 1
}else {
left = mid + 1
}
}
return 0
}
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看