美文网首页
50. Pow(x, n)

50. Pow(x, n)

作者: justonemoretry | 来源:发表于2021-04-18 14:14 被阅读0次

    解法

    这个题的解法倒是挺简单的,就是将n二分,然后不断递归计算,这个地方开始想着能不能不二分,而是三分,其实也可以,不过这样就是3叉树,余数不为0的处理情况也更复杂。

    这个题本来是能直接过的,但是有个坑点,就是n小于0时,如果转为-n,是会存在溢出的,要将int转为long,这是因为负数的最小值绝对值比正数大1。

    class Solution {

        public double myPow(double x, int n) {

            if (n == 0) {

                return 1;

            }

            long N = n;

            return n > 0 ? quickPow(x, N) : 1 / quickPow(x, -N);

        }

        private double quickPow(double x, long n) {

            if (n == 1) {

                return x;

            }

            double d = quickPow(x, n / 2);

            return n % 2 == 0 ? d * d : d * d * x;

        }

    }

    相关文章

      网友评论

          本文标题:50. Pow(x, n)

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