实现 int sqrt(int x) 函数。
计算并返回 x 的平方根。
x 保证是一个非负整数。
案例 1:
输入: 4
输出: 2
案例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 由于我们想返回一个整数,小数部分将被舍去。
详见:https://leetcode.com/problems/sqrtx/description/
Java实现:
方法一:暴力解
class Solution { public int mySqrt(int x) { if(x<0){ return x; } int begin=1; int end=x; int mid=0; while(begin<=end){ mid=(begin+end)>>1; if(mid==x/mid){ return mid; }else if(mid<x/mid){ begin=mid+1; }else{ end=mid-1; } } return end;//结束条件end一定<begin,所以返回end } }
方法二:牛顿迭代法
class Solution { public int mySqrt(int x) { if(x<0){ return x; } long v=x; while(v*v>x){ v=(v+x/v)/2; } return (int)v; } }