三刷69. Sqrt(x)

Easy
注意几点,overflow所以全部设成long, 返回的时候cast一下。
还有binary search的时候始终拿midmid跟x比较,不是跟end比较。
最后return的时候先看end
end <= x不

class Solution {
    public int mySqrt(int x) {
        if (x == 0){
            return 0;
        }
        //9
        //start=1
        //end=5
        //mid=3
        long start = 1;
        long end = x;
        while (start + 1 < end){
            long mid = start + (end - start) / 2;
            if (mid*mid == x){
                return (int) mid;
            } else if (mid*mid > x){
                end = mid;
            } else {
                start = mid;
            }
        }
        if (end*end <= x){
            return (int) end;
        } else {
            return (int) start;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,919评论 0 38
  • JNI: Java Native Interface ;Java本地调用 JNI功能: 可以实现Java函数和Na...
    shuixingge阅读 603评论 1 3
  • 今天开始学习安抚,向内感知的时候可以明显的感觉到身体的气血是投影在心的气血上。之前一直是想去躲避疼痛,今天勇敢的面...
    静_ccba阅读 161评论 1 1
  • 听弦断,断那三千痴缠。坠花湮,湮没一朝风涟。花若怜,落在谁的指尖。晨曦微露,说是寻常风月,等闲谈笑间,其实满溢着...
    用他的歌阅读 679评论 2 11