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的主要内容,如果未能解决你的问题,请参考以下文章