您的位置:首页 > 其它

Letcode 题:pow(x,n)

2013-03-13 11:39 176 查看
最初的想法,将输入乘以n-1次,时间复杂度为O(n),结果运行结果超时

public class Solution {
public double pow(double x, int n) {
double result = x;
double tmp = 1/x;
if(n == 0)
return 1;

if(n > 0){
for(int i = 1; i < n; i++)
result = result * x;
} else{
for(int j = n; j < -1; j++)
result = result * tmp;
}

return result;

}
}


2.用二分:
xn = xn/2 * xn/2 * xn%2
时间复杂度:O(logN)
这样,使用递归函数,大数据超时

public double pow(double x, int n) {
double result = x;
if (x == 0){
if(n == 0)
return 1;
else
return 0;
}

if (n == 0)
return 1;
if (n == 1)
return x;

if (n == -1)
return 1/x;

if(n >= 2)
return pow(x, n / 2) * pow(x, n / 2) * pow(x, n % 2);
else{
int absn = Math.abs(n);
return 1 / (pow(x, absn / 2) * pow(x, absn / 2) * pow(x, absn % 2));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: