Leetcode-69 Sqrt(x)

作者: itbird01 | 来源:发表于2021-11-01 18:56 被阅读0次

    69. Sqrt(x)

    解题思路

    解法1:使用二分查找,从0到x中寻找某个整数数的平方小于x,但是大于这个数的下一个整数,平方大于x,则为结果
    解法2:比较巧妙,使用数学公式转换,题目要求不可以使用sqrt或者pow,但是可以使用指数函数

    解题遇到的问题

    1.解法1:需要注意mid*mid很有可能大于int最大值,所以是long
    2.解法2:由于转换成了指数函数,所以求出的ans很有可能需要+1,所以需要特殊处理

    后续需要总结学习的知识点

    ##解法1
    class Solution {
        public int mySqrt(int x) {
            int l = 0, r = x, result = -1;
            while (l <= r) {
                int mid = (r + l) / 2;
                if ((long) mid * mid <= x) {
                    l = mid + 1;
                    result = mid;
                } else {
                    r = mid - 1;
                }
            }
            return result;
        }
    }
    
    ##解法2
    class Solution {
        public int mySqrt(int x) {
            if (x == 0) {
                return 0;
            }
            int ans = (int) Math.exp(0.5 * Math.log(x));
            return (long) (ans + 1) * (ans + 1) <= x ? (ans + 1) : ans;
        }
    }
    

    相关文章

      网友评论

        本文标题:Leetcode-69 Sqrt(x)

        本文链接:https://www.haomeiwen.com/subject/omwialtx.html