leetcode-数学-69

Posted yunus-ustb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-数学-69相关的知识,希望对你有一定的参考价值。

题目:x的平方根

实现 int sqrt(int x) 函数。

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

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

示例 1:

输入: 4
输出: 2
示例 2:

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

思路分析:二分查找和牛顿法

一、二分法

因为典型的二分查找返回的是某个附近的值,故得到返回的那个值之后判断一下它的平方大于x就返回mid-1,反之直接返回mid。

代码如下:

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

 

以上是关于leetcode-数学-69的主要内容,如果未能解决你的问题,请参考以下文章

[leetcode]69

Leetcode 69.求x的根,返回整数

LeetCode69. x 的平方根

LeetCode69:x的平方根

LeetCode笔记:Biweekly Contest 69

LeetCode(69):Sqrt(x)