Pow(x, n)

Implement pow(xn).

 1 public class Solution {

 2     public double pow(double x, int n) {

 3         // Start typing your Java solution below

 4         // DO NOT write main() function

 5         for(int i = 1; i < n; i ++)

 6         {

 7             x *= x;

 8         }

 9         return x;

10     }

11 }

不过大数据过不了。。

应该用二分法,感觉很多数学题都是用二分来做的, 同时还要注意n小于0的情况。

 1 public class Solution {

 2     public double pow(double x, int n) {

 3         // Start typing your Java solution below

 4         // DO NOT write main() function

 5         if(n < 0) return 1.0 / power(x, -n);

 6         else return power(x, n);

 7     }

 8     public double power(double x, int n)

 9     {

10         if(n == 0) return 1;

11         if(n == 1) return x;

12         double v = power(x, n / 2);

13         if(n % 2 == 0) return v * v;

14         else return v * v * x;

15     }

16 }

 

第三遍:

如果不加上x== -1 的特殊test case, 会过不了大测试。 注意 power里面 不能做

power(x, n / 2) * power(x, n / 2)
这样时间复杂度太高。
 1 public class Solution {

 2     public double pow(double x, int n) { 3 if(x == 1) return 1; 4 if(x == 0) return 0; 5 if(x == -1){ 6 if(n % 2 == 0) return 1; 7 else return -1; 8  } 9 if(n < 0) return 1.0 / pow(x, -n); 10 return power(x, n); 11  } 12 13 public double power(double x, int n){ 14 if(n == 1) return x; 15 if(n == 0) return 1; 16 double v = power(x, n / 2); 17 if(n % 2 == 0) return v * v; 18 else return v * v * x; 19  } 20 }

 

你可能感兴趣的:(po)