Sqrt(x) Leetcode

Implement int sqrt(int x).

Compute and return the square root of x.

小小的一道题竟然做了半天。。。= =

乘法啊加法啊reverse这些一定要考虑到越界的问题。

另外可以使用start + 1 < end的条件,这个时候一般跳出循环之后要判断一下边界值。

public class Solution {
    public int mySqrt(int x) {
        if (x == 0) {
            return 0;
        }
        int start = 1;
        int end = x;
        while (start + 1 < end) {
            int mid = (end - start) / 2 + start;
            if (mid < x / mid) {
                start = mid;
            } else if (mid == x / mid) {
                return mid;
            } else {
                end = mid;
            }
        }
        return start;
    }
}
时间: 2024-10-12 20:51:44

Sqrt(x) Leetcode的相关文章

Solution to LeetCode Problem Set

Here is my collection of solutions to leetcode problems. LeetCode - Course Schedule LeetCode - Reverse Linked List LeetCode - Isomorphic Strings LeetCode - Count Primes LeetCode - Remove Linked List Elements LeetCode - Happy Number LeetCode - Bitwise

[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)

题目链接: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]Sqrt(x) @ Python

原题地址:https://oj.leetcode.com/problems/sqrtx/ 题意: Implement int sqrt(int x). Compute and return the square root of x. 解题思路:实现开平方函数.这里要注意的一点是返回的时一个整数.通过这一点我们可以看出,很有可能是使用二分查找来解决问题的.这里要注意折半查找起点和终点的设置.起点i=1:终点j=x/2+1:因为在(x/2+1)^2 > x,所以我们将折半查找的终点设为x/2+1.

LeetCode: Sqrt(x) [069]

[题目] Implement int sqrt(int x). Compute and return the square root of x. [题意] 实现 int sqrt(int x),计算并返回平方根. [思路] 用牛队迭代法求解,本题可以转化为求 f(n)=n^2-x=0的解 用牛顿迭代法不断逼近真实解,假设曲线上有点(n[i],f(n[i])) 则这点出的斜率为2n[i], 通过该点的直线方程为 y=2n[i](n-n[i])+f(n[i]); 该直线与横轴的焦点通过求解y=2n[

【leetcode 分治法】Pow(x, n)与Sqrt(x)函数的实现

</pre>Pow(x, n)</h1><h1><span style="color:#3333ff;">1.分析</span></h1><div><span style="font-size:18px;">函数原型double pow(double x, int n),实现求x的n次方.</span></div><div><sp

【leetcode刷题笔记】Sqrt(x)

Implement int sqrt(int x). Compute and return the square root of x. 题解:二分的方法,从0,1,2.....x搜索sqrt(x)的值. 代码如下: 1 public class Solution { 2 public int sqrt(int x) { 3 long l = 0; 4 long r = x; 5 6 while(l <= r){ 7 long mid = l + (r-l)/2; 8 if(x == mid*mi

【一天一道LeetCode】#69. Sqrt(x)

一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Implement int sqrt(int x). Compute and return the square root of x. (二)解题 实现sqrt(x),找到一个数,它的平方等于小于x的最接近x的数. class Solution { public: int mySqrt(int x) { int

Sqrt(int x) leetcode java

Reference: http://blog.csdn.net/lbyxiafei/article/details/9375735  题目: Implement int sqrt(int x). Compute and return the square root of x. 题解: 这道题很巧妙的运用了二分查找法的特性,有序,查找pos(在这道题中pos=value),找到返回pos,找不到返回邻近值. 因为是求数x(x>=0) 的平方根, 因此,结果一定是小于等于x且大于等于0,所以用二分查