美文网首页
LeetCode刷题分类之二分查找69. x 的平方根

LeetCode刷题分类之二分查找69. x 的平方根

作者: 逍遥白亦 | 来源:发表于2020-12-23 23:04 被阅读0次

69. x 的平方根

题目

实现int sqrt(int x)函数。

计算并返回x的平方根,其中x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例 1:

输入: 4
输出: 2

示例2:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 
     由于返回类型是整数,小数部分将被舍去。

思路

套用二分框架

int binarySearch(int[] nums, int target) {
    int left = 0, right = ...;

    while(...) {
        int mid = left + (right - left) / 2;
        if (nums[mid] == target) {
            ...
        } else if (nums[mid] < target) {
            left = ...
        } else if (nums[mid] > target) {
            right = ...
        }
    }
    return ...;
}

代码

class Solution {
    public int mySqrt(int x) {
        long left = 0;
        long right = x;
        while(left <= right){
            long mid = left + (right - left)/2;
            if(mid * mid == x){
                return (int)mid;
            }else if(mid * mid < x) {
                left = mid + 1;
            }else if(mid * mid > x){
                right = mid - 1;
            }
        }

        if(left * left > x){
            return (int)left -1;
        }

        return (int)left;
    }
}

相关文章

网友评论

      本文标题:LeetCode刷题分类之二分查找69. x 的平方根

      本文链接:https://www.haomeiwen.com/subject/nqkpnktx.html