69. x 的平方根

69. x 的平方根

题目链接

分析

有三点需要注意

解法

public int mySqrt(int x) {
    if(x==0){
        return 0;
    }
    int start=1,end=x;
    int result=1;
    while(start<=end){
        int mid  = start + (end-start)/2;
        // 避免mid超长
        if(mid > x/mid){
            end = mid-1;
        } else {
            // 用一个专门的值来保存值,不要轻易修改二分法的定义
            start = mid+1;
            // mid实际上就是我们要找的值
            // 如果平方大于x的第一个整数,那就应该返回mid+1,即start
            result = mid;
        }
    }
    return result;
}

相关题

704. 二分查找
34. 在排序数组中查找元素的第一个和最后一个位置
35. 搜索插入位置
简化版
367. 有效的完全平方数