【LeetCode - Java练习】69.x的平方根(简单)

1.题目描述

在这里插入图片描述

2.解题思路

二分查找:
由于 x平方根的整数部分ans 是满足 k^2 ≤x 的最大 k 值,因此我们可以对 k进行二分查找,从而得到答案。
二分查找的下界为 0,上界可以粗略地设定为 x。在二分查找的每一步中,我们只需要比较中间元素mid 的平方与 x 的大小关系,并通过比较的结果调整上下界的范围。由于我们所有的运算都是整数运算,不会存在误差,因此在得到最终的答案 ans 后,也就不需要再去尝试ans+1 了。

3.代码实现

class Solution {
    
    
    public int mySqrt(int x) {
    
    
        int l = 0, r = x, ans = -1;
        while (l <= r) {
    
    
            int mid = l + (r - l) / 2;
            if ((long) mid * mid <= x) {
    
    
                ans = mid;
                l = mid + 1;
            } else {
    
    
                r = mid - 1;
            }
        }
        return ans;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_48683410/article/details/114005305