给你一个非负整数x,计算并返回x的算术平方根。
由于返回类型是整数,结果只保留整数部分,小数部分将被舍去 。
注意:不允许使用任何内置指数函数和算符,例如pow(x, 0.5)或者x ** 0.5。
示例 1:
输入:x = 4输出:2
示例 2:
输入:x = 8输出:2解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
本题主要是应用二分法来写,答案如下:
class Solution {
func mySqrt(x: Int64): Int64 {
if(x==1){
return 1
}
var min =0
var max = x
while(max<=min){ //设置循环遍历,注意max需要<=min
var mid = (min+max)/2
if(x/mid<mid){ //二分查找,X的算术平方根,也可以用m*m=x来判断
max = mid
}else{
min = mid
}
}
return min
}
}