LeetCode-50.Pow(x, n)(相关话题:二分法)

实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例 1:

输入: 2.00000, 10
输出: 1024.00000

示例 2:

输入: 2.10000, 3
输出: 9.26100

示例 3:

输入: 2.00000, -2
输出: 0.25000
解释: 2^(-2) = 1/2^2 = 1/4 = 0.25

说明:

  • -100.0 < x < 100.0
  • n 是 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1] 。

解题思路:问题可以转换成求x的正整数n次幂,可以用循环,循环n次累乘得到结果,但是这样效率会比较低,可以利用类似于二分法的思想,而非每次仅乘一个x,如下图所示:

java代码:

class Solution {
    public double myPow(double x, int n) {
        if(0 == n)
            return 1;

        return myPow(x, (long) n);
    }
    private double myPow(double x, long n){
        if(n < 0)
            return 1.0/myPow(x, -n);

        double res = 1.0;
        while(n > 0){
            if((n & 1) == 1)
                res *= x;
            n >>= 1;
            x *= x;
        }
        return res;
    }
}

参考文章:https://blog.csdn.net/Bendaai/article/details/80163177

猜你喜欢

转载自blog.csdn.net/weixin_38823568/article/details/81636725