LeetCode #50 Pow(x, n) Pow(x, n)

50 Pow(x, n) Pow(x, n)

Description:
Implement pow(x, n), which calculates x raised to the power n (xn).

Example:

Example 1:

Input: 2.00000, 10
Output: 1024.00000

Example 2:

Input: 2.10000, 3
Output: 9.26100

Example 3:

Input: 2.00000, -2
Output: 0.25000
Explanation: 2-2 = 1/22 = 1/4 = 0.25

Note:

-100.0 < x < 100.0
n is a 32-bit signed integer, within the range [−2^31, 2^31 − 1]

题目描述:
实现 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/22 = 1/4 = 0.25

说明:

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

思路:

快速幂算法
每次将 n减半, 如果是奇数, 乘 x, 否则 x自乘
时间复杂度O(lgn), 空间复杂度O(1)

代码:
C++:

class Solution 
{
public:
    double myPow(double x, int n) 
    {
        double result = 1.0;
        for (int i = n; i != 0; i /= 2) 
        {
            if (i & 1) result *= x;
            x *= x;
        }
        return n < 0 ? 1 / result : result;
    }
};

Java:

class Solution {
    public double myPow(double x, int n) {
        double result = 1.0;
        for (int i = n; i != 0; i /= 2) {
            if ((i & 1) != 0) result *= x;
            x *= x;
        }
        return n < 0 ? 1 / result : result;
    }
}

Python:

class Solution:
    def myPow(self, x: float, n: int) -> float:
        return x ** n

你可能感兴趣的:(LeetCode #50 Pow(x, n) Pow(x, n))