sqrt

sqrtx

http://www.nowcoder.com/questionTerminal/09fbfb16140b40499951f55113f2166c

二分法,注意考虑溢出

class Solution {
public:
    /**
     *
     * @param x int整型
     * @return int整型
     */
    int sqrt(int x) {
        // write code here
        // 需要考虑溢出
        if (x <= 0) return 0;
        int left = 1, right = x;
        while (left < right) {
            long middle = (left + right) / 2;
            if (middle * middle <= x && (middle + 1) * (middle + 1) > x) return middle;
            if (middle * middle > x)  right = middle;
            else left = middle;
        }
        return left;
    }
};
刷遍天下无敌手 文章被收录于专栏

秋招刷题历程

全部评论
用java写的,按您的算法,哪里错了?
点赞 回复 分享
发布于 2021-01-23 16:19
import java.util.*; public class Solution { public int sqrt(int x){ if(x<=0) return 0; int low=1,high=x; while (low<high>x) { return mid; }else if (mid*mid>x){ high=mid-1; }else { low=mid; } } return low; } }</high>
点赞 回复 分享
发布于 2021-01-23 16:18

相关推荐

我知道自己这个念头不好,但是真的很羡慕😭大家的父母长辈都能帮到自己吗?
大飞的诡术妖姬:父母都是普通打工人,身体也不好,能供我读到本科毕业很不容易,毕业以后帮衬心里会有罪恶感。虽然可能会错过很多风景,但还是想活的心安理得。
点赞 评论 收藏
分享
吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
20
1
分享

创作者周榜

更多
牛客网
牛客企业服务