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 }

 

posted on 2013-10-04 12:22  Step-BY-Step  阅读(205)  评论(0编辑  收藏  举报

导航