题解 | #求平方根#
求平方根
https://www.nowcoder.com/practice/09fbfb16140b40499951f55113f2166c
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param x int整型 * @return int整型 */ public int sqrt (int x) { // write code here if(x==0||x==1){ return x; } long left=1; long right=x; while(left<=right){ long mid=left+(right-left)/2; if(mid*mid==x){ return (int)mid; } else if(mid*mid>x){ right=mid-1; }else{ left=mid+1; } } return (int)right; } }
可以利用二分查找法,只是这次的mid值要自乘,毕竟是求平方根,分别设置好左右边界,求取中间mid值后,记住八个字,
大左小右,最后取右。
意思就是mid 值自乘后大于目标值x ,往mid的左边取值,right = mid-1;
反之,left =mid+1.
当循环快要结束的时候,停止循环前一次的right的值就是平方根的整数部分。