【每日打卡】x的平方根

x的平方根(简单)

2020年4月29日

题目来源:力扣

实现 int sqrt(int x) 函数。

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

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

示例 1:

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

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

代码实现
用sqrt方法,直接调用别人封装好的方法,没成就感

class Solution {
    public int mySqrt(int x) {
        int output=(int) Math.sqrt(x);
    	return output;
    }
}

在这里插入图片描述
二分法,注意平方值需要是long型

class Solution {
  public int mySqrt(int x) {
	    if(x<2) return x;
	    long pow;
	    int m,l=2,r=x/2;
	    while(l<=r){
	        m=l+(r-l)/2;
	        pow=(long)m*m;
	        if(pow>x) r=m-1;
	        else if(pow<x) l=m+1;
	        else return m;
	    }
	    return r;
    }
}

在这里插入图片描述

牛顿法

在这里插入图片描述

class Solution {
  public int mySqrt(int x) {
    if (x < 2) return x;

    double x0 = x;
    double x1 = (x0 + x / x0) / 2.0;
    while (Math.abs(x0 - x1) >= 1) {
      x0 = x1;
      x1 = (x0 + x / x0) / 2.0;
    }

    return (int)x1;
  }
}

在这里插入图片描述

原创文章 57 获赞 54 访问量 2338

猜你喜欢

转载自blog.csdn.net/weixin_41541562/article/details/105832851