leetcode No69. Sqrt(x)

Question:

Implement int sqrt(int x).

Compute and return the square root of x.

求平方根

Algorithm:

牛顿迭代法,迭代多次后,可以求出平方根。

还有一种雷神之锤3的程序代码,比C++标准库sqrt()的还快。

在这里贴出链接:http://blog.csdn.net/wangxiaojun911/article/details/18203333,如果有大神看懂了还麻烦教一下小白。

Accepted Code:

class Solution {  //牛顿迭代算法
public:
    int mySqrt(int x) {
        if(x<2)return x;
        int left = 0;
        int right = x;
        while(left<right)
        {
           right = (left+right)/2;
           left = x/right;
        }
        return min(left,right);
    }
};

时间: 2024-09-29 00:09:31

leetcode No69. Sqrt(x)的相关文章

LeetCode --- 69. Sqrt(x)

题目链接:Sqrt(x) Implement int sqrt(int x). Compute and return the square root of x. 这道题的要求是实现int sqrt(int x),即计算x的平方根. 考虑二分,即先令l和r分别为1和x/2+1(x的平方根一定小于等于x/2+1),然后m等于(l+r)/2,不断比较m*m和x的大小. 由于m*m的时候,可能溢出,因此可以用除法代替乘法,或者采用long long类型. 时间复杂度:O(logn) 空间复杂度:O(1)

Leetcode 69. Sqrt(x)及其扩展(有/无精度、二分法、牛顿法)详解

Leetcode 69. Sqrt(x) Easy https://leetcode.com/problems/sqrtx/ Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to be a non-negative integer. Since the return type is an integer, the decimal digits are truncat

[LeetCode][JavaScript]Sqrt(x)

Sqrt(x) Implement int sqrt(int x). Compute and return the square root of x. https://leetcode.com/problems/sqrtx/ 对于数学早就还给老师的我,开方真是跪了. 查了一下是牛顿迭代法(什么鬼. 先随便猜一个数,我就猜了三分之一,然后套用公式. candidate = (candidate + x / candidate) / 2; 题目要求返回int型,我精度就算到了0.01. 查牛顿迭代法

Leetcode 69. Sqrt(x) 解题报告【C库函数sqrt(x)模拟-求平方根】

69. Sqrt(x) Total Accepted: 93296 Total Submissions: 368340 Difficulty: Medium 提交网址: https://leetcode.com/problems/sqrtx/ Implement int sqrt(int x). Compute and return the square root of x. 分析: 解法1:牛顿迭代法(牛顿切线法) Newton's Method(牛顿切线法)是由艾萨克·牛顿在<流数法>(M

Leetcode 69. Sqrt(x) 求整数根 in Java

69. Sqrt(x) Total Accepted: 109623 Total Submissions: 418262 Difficulty: Medium Implement int sqrt(int x). Compute and return the square root of x. public class Solution { public int mySqrt(int x) { if(x==1) return 1; //注意此题返回值int,和sqrt返回值double不同 do

leetcode 69 Sqrt(x) ---java

Implement int sqrt(int x). Compute and return the square root of x. 求一个数的平方根. 其实就是一个二分查找. 有两种查找方式 1.就是找到最大int值,然后从0到max,二分查找. 2.直接针对x,从0到x,二分查找. public class Solution { public int mySqrt(int x) { int max = 46340; int flag = max/2; if( x >= max*max )

leetcode之sqrt

Implement int sqrt(int x). Compute and return the square root of x. 这道题也属于二分查找的变形 主流的方法是用牛顿插值,牛顿法的思想参考http://blog.csdn.net/StarCXDJ/article/details/18051207 将代码附在下面: public int sqrt(int x) { if (x == 1) return 1; double res = x / 2; while (Math.abs(r

Java for LeetCode 069 Sqrt(x)

Implement int sqrt(int x). Compute and return the square root of x. 解题思路一: public int mySqrt(int x) { return (int)Math.sqrt(x); } 神奇般的Accepted. 解题思路二: 参考平方根计算方法 计算平方根的算法 这里给出最简单的牛顿法,JAVA实现如下: public int mySqrt(int x) { double g = x; while (Math.abs(g

【leetcode】Sqrt(x)

Implement int sqrt(int x). Compute and return the square root of x. 1 class Solution { 2 public: 3 int mySqrt(int x) { 4 unsigned long long begin=0; 5 unsigned long long end=(x+1)/2; 6 unsigned long long mid; 7 unsigned long long tmp; 8 9 while(begin