50. Pow(x, n)

Posted lychnis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了50. Pow(x, n)相关的知识,希望对你有一定的参考价值。

50. Pow(x, n)
Medium

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

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 [−231, 231 − 1]

 

二分查找的变形题,直接暴力运算会超时. 可能会想到用dp数组来加速运算, 或者是递归.

注意负数的处理, 只要多加一个1 / x 即可. 而且只需要在最外层处理这个, 递归的时候只传绝对值

class Solution {
public:
    double myPow(double x, int n) {
        if(0==n)return 1;
        double d=myPow(x,abs(n/2)); //abs是为了配合处理负数,如果不加abs,计算结果会乱
        d= n%2? d*d*x:d*d;
        return n<0? 1/d:d;
    }
};

 

以上是关于50. Pow(x, n)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode50. Pow(x, n)(快速幂)

LeetCode50. Pow(x, n)(快速幂)

[LeetCode] 50. Pow(x, n) Java

LeetCode50 Pow(x, n)

50. Pow(x, n) 实现Pow(x,n)

50. Pow(x, n)