申明:本文只用做自己的学习记录
题目
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842…,
由于返回类型是整数,小数部分将被舍去。
代码
func mySqrt(x int) int {
//判断边界条件
if x == 1 || x == 0 {
return x
}
//初始化左右索引值方便二分查找
left, right := 0, x
for left <= right {
//更新中间值
midle := left + (right-left)/2
//如果中间值的平方等于x则返回该值
if midle*midle == x {
return midle
// 当中间值大于x,更新右索引值
} else if midle*midle > x {
right = midle - 1
// 当中间值大于x,更新左索引值
} else if midle*midle < x {
left = midle + 1
}
}
//当停在最后一位时,right代表最接近的数
return right
}