LeetCode 50. Pow(x, n)

Posted Muche

tags:

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

LeetCode 50. Pow(x, n)

Implement pow(x, n), 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]

利用上一题的思路,直接转换成对数计算,注意边界条件即可

class Solution {
    public double myPow(double x, int n) {
        if(x == 0) return 0;
        int sign = 1;
        if(x < 0 && n % 2 != 0) sign = -1;
        x = Math.abs(x);
        return sign * Math.exp(n * Math.log(x));
    }
}

另外快速幂,见剑指offer 16提
考虑分母不能为0即可

class Solution {
    public double myPow(double x, int n) {
      if(x == 0 && n <= 0) throw new RuntimeException();
      
      if(n == 1) return x;
      if(n == 0) return 1;
      if(n == -1) return 1/x;
      
      if(x == 0) return 0;
      if(x == 1) return 1;
      if( x== -1) return (n & 1) == 0 ? 1 : -1;
      double even = myPow(x, n / 2);
      return even * even * myPow(x, n % 2);
    }
}









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

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

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

LeetCode50 Pow(x, n)

LeetCode50. Pow(x, n)

[LeetCode] 50. Pow(x, n)

leetcode || 50Pow(x, n)