实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。
方案:快排思想
设立边界,利用快排思想,快速寻找处ans2<x &&(ans+1)2>x的数
classSolution{publicintmySqrt(int x){if(x <=0){return0;}long ans =1;long min =1;long max = x;while(true){if(ans == max || min == max -1){return(int)ans;}elseif(ans * ans < x){
min = ans;
ans =(min + max)/2;}elseif(ans * ans > x){
max = ans;
ans =(min + max)/2;}elseif(ans * ans == x){return(int)ans;}}}}