计算x的n次方
我使用的暴力枚举法,最开始的时候会提示超时,应为当x大于0并且远小于1,如果n比较大的时候,其实结果为0,但是我们要花很长的时间计算。同理,当x远大于1,如果n很小的时候,也会超时,所以我们可以排除这两个特殊情况,然后进行计算。
我的代码如下:
class Solution {
public:
double myPow(double x, int n) {
double sum=1.0;
if(x==1) {
sum = 1.0;
}else if(x==-1) {
if(n%2==0) {
sum = 1.0;
}else {
sum = -1.0;
}
}
else {
if (n == 0) {
sum = 1.0;
}
else if (n > 0) {
if (x>0&&x < 0.5 && n>100) {
sum = 0.0;
}
else
{
for (int i = 0; i < n; i++) {
sum = sum * x;
}
}
}
else {
if(x>1&&n<-100) {
sum= 0.0;
}else {
for (int i = 0; i < -n; i++) {
sum = sum * x;
}
sum = 1.0 / sum;
}
}
}
return sum;
}
};
但是这个方法的时间复杂度有点高。