🌕 69. x 的平方根

吞佛童子2022年6月9日
  • algorithm
  • array
小于 1 分钟

🌕 69. x 的平方根

难度: 🌕

问题描述

img_7.png


解法

class Solution {
    public int mySqrt(int x) {
        // 思路:
        // 二分
        return mySol((long) x, 1, x);
    }

    private int mySol(long target, int left, int right) {
        // 递归终止条件
        if(left >= right) {
            return right;
        }
        // left < right
        int mid = left + ((right - left) >> 1) + 1; // 致力于找右边界,防止 left = mid 死循环
        long mul = (long) mid * (long) mid;
        if(target == mul) {
            return mid;
        } else if(target > mul) {
            left = mid;
            return mySol(target, left, right);
        } else {
            // target < mul
            right = mid - 1;
            return mySol(target, left, right);
        }
    }
}

输出

img_6.png

上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou