69. x 的平方根

题目描述

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 
     由于返回类型是整数,小数部分将被舍去。

思路

1.可以使用二分查找算法,照顾到0和大数就可以了。

Java代码实现

 public int mySqrt(int x) {
        long left = 0;
        long right = x;
        while(left<=right){
            long mid = (left+right)/2;
            long res = mid*mid;
            if(res == x)
                return (int) mid;
            else if(res > x)
                right = mid-1;
            else
                left = mid+1;
        }
        return (int) right;
    }

Golang代码实现

func mySqrt(a int) int {
    if a<=0{
        return a
    }
    left := 0
    right := a
    for left <= right{
        mid := (left+right)/2
        if mid*mid == a{
            return mid
        }else if mid*mid > a{
            right = mid - 1
        }else{
            left = mid + 1
        }
    }

    return right
}
全部评论

相关推荐

09-15 15:53
Java
Elastic90:我看到的是东软的人在耐心回应,而那位实习生跟在发疯似的
投递东软集团等公司10个岗位
点赞 评论 收藏
分享
27届毕业,最近想找一段大厂实习,感觉简历有些问题,好多都不给面,求大佬们指点,最近好焦虑
后端劝退第91人:我从后端的角度分析一下你的第一个项目,我感觉亮点不是很突出。因为我是因为组内有需求,临时上手学react干活。我用到的技术基本就cover你那个智慧园区管理平台的很多亮点了。那作为比较专业的前端,你上述的内容是不是有点单薄呢。感觉还得包装
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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