Leetcode|【69】Sqrt(x) |二分查找

原创 2015年07月06日 19:04:16

Implement int sqrt(int x).

Compute and return the square root of x.

题目类型:perfect square

解法有两种:
1)第一种是二分查找,注意边界上限可以从x/2+1开始查找。
2)第二种方法是牛顿迭代法

解法1:二分查找

int sqrt(int n){//二分查找,8ms
 int res=n/2+1;
 int x=0;
 while(x<=res){
    int mid=(x+res)/2;
    long long sq=(long long)mid*(long long)mid;
    if(sq==n) return mid;
    else if(sq<n) x=mid+1;
    else res=mid-1;
 }
 return res;
}

上面的解法可读性较差,解释下:
a)为什么从x/2+1查找,(x/2+1)^2 > x 这个是可以证明的。
b)
解法2:

    int mySqrt(int x) {//牛顿迭代法 12ms
        if(x<=0) return 0;
        double res=1;
        double last=0;
        for(;last!=res;last=res,res=(res+x/res)/2);
        return int(res);
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LeetCode - 69. Sqrt(x)

方法一:Binary Search 这道题目是一个典型的binary search问题,看似比较简单,但其实陷阱也不少。一开始直接从1到x使用binary search来寻找答案,但结果竟然TLE了...

leetCode 69.Sqrt(x) (平方根) 解题思路和方法

Implement int sqrt(int x). Compute and return the square root of x. 思路:因为本题是int类型的数据,所以可以使用二分法...

leetcode || 69、Sqrt(x)

problem: Implement int sqrt(int x). Compute and return the square root of x. Hide T...

LeetCode:69. Sqrt(x)

题目链接: 69. Sqrt(x) 题目描述: Implement int sqrt(int x) Compute and return the square root of x...

LeetCode 69. Sqrt(x)

DescriptionImplement int sqrt(int x). Compute and return the square root of x.my program 思路:看似很简单...

[Leetcode] 69. Sqrt(x) 解题报告

题目: Implement int sqrt(int x). Compute and return the square root of x. 思路: 这道题目挺有意思,虽然基本思...

LeetCode 69. Sqrt(x)

题目: Implement int sqrt(int x). Compute and return the square root of x.思路: 写一个自己的求平方根的函数。 初始化low...

LeetCode_69---Sqrt(x)

Implement int sqrt(int x). Compute and return the square root of x. Hide Tags  Math Binary Se...

LeetCode 69 — Sqrt(x)(C++ Java Python)

题目:http://oj.leetcode.com/problems/sqrtx/ Implement int sqrt(int x). Compute and return the square ...

<LeetCode OJ> 69 / 367 Sqrt(x) / Valid Perfect Square

69. Sqrt(x) My Submissions Question Total Accepted: 79525 Total Submissions: 325488 Difficulty: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)