码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-数学-69

时间:2020-05-10 17:07:08      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:结果   大于   str   它的   保留   思路分析   部分   输入   col   

题目: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

标签:结果   大于   str   它的   保留   思路分析   部分   输入   col   

原文地址:https://www.cnblogs.com/Yunus-ustb/p/12861156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!