LeetCode50 Pow(x, n)

Posted wangxiaobao的博客

tags:

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

题目:

Implement pow(xn). (Medium)

分析:

实现库函数求幂运算,遍历一遍是超时的,用快速幂,就是分治的思想,每次把n去掉一半。

注意:n的取值范围,n = MIN_INT时,-n会超范围,这里WA了一次。

代码:

 1 class Solution {
 2 private:
 3     double helper(double x, long long n) {
 4         if (n == 0) {
 5             return 1;
 6         }
 7         double result = 1;
 8         double p1 = myPow(x, n / 2);
 9         if (n % 2 == 0) {
10             return p1 * p1;                
11         }
12         else {
13             return p1 * p1 * x;
14         }
15     }
16 public:
17     double myPow(double x, int n) {
18         long long nl = n;
19         if (n > 0) {
20             return helper(x, n);
21         }
22         else {
23             return 1.0 / helper(x, -nl);
24         }
25     }
26 };

 

以上是关于LeetCode50 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)