leetcode0050. Pow(x, n) - medium

题目:Pow(x, n)

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

示例 1:

输入:x = 2.00000, n = 10
输出:1024.00000

示例 2:

输入:x = 2.10000, n = 3
输出:9.26100

示例 3:

输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25

提示:

-100.0 < x < 100.0
- 2 31 2^{31} 231 <= n <= 2 31 2^{31} 231-1
n 是一个整数
要么 x 不为零,要么 n > 0 。
− 1 0 4 < = x n < = 1 0 4 -10^4 <= x^{n} <= 10^4 104<=xn<=104

2 solution

这道题要采用倍增的思想,就是将一个指数问题转换成平方和乘法,而不是一个一个乘。详见代码

代码

double myPow(double x, int n) {
    double s = 1;
    long long m = abs((long long) n);
    while (m){
        if(m % 2){
            s *= x;
        }
        x *= x;
        m /= 2;
    }
    if(n < 0) s = 1 / s;
    return s;
}

结果

leetcode0050. Pow(x, n) - medium_第1张图片



你可能感兴趣的:(Leetcode,算法,leetcode,c++)