题解 | #求平方根#

求平方根

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的值就是平方根的整数部分。

全部评论

相关推荐

06-26 10:08
门头沟学院 C++
北京Golang实习,一个月4700,吃住都不报,公司位置在海淀。请问友友怎么看呢?如果要租房的话有什么建议吗
码农索隆:租房肯定是合租了,剩下的钱,差不多够正常吃饭了,看看能不能学到东西吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务