使用的还是很简单的做法,根据n的奇偶二分来做,效率是O(logn)的,要注意的是要判断n的正负,尤其是测试集中出现了n为INT_MIN的情况,要单独处理
class Solution {
public:
double pow(double x, int n) {
if( n == 0 )
{
return 1.0;
}
if( n == 1 )
{
return x;
}
if( n > 1 )
{
double tmp = pow(x,n>>1);
if( n%2 == 0 )
{
return tmp*tmp;
}
else
{
return tmp*tmp*x;
}
}
if( n == INT_MIN )
{
return (1.0/(pow(x,INT_MAX)*x));
}
return (1.0/(pow(x,-n)));
}
};
本文介绍了一种使用快速幂算法计算实数的整数次幂的方法,该算法的时间复杂度为O(logn)。通过递归地将指数进行二分,可以高效地处理包括负数在内的各种情况,并特别考虑了INT_MIN的特殊情况。
592

被折叠的 条评论
为什么被折叠?



