Implement pow(x, n).
/*二分法,复杂度为O(lgn)。
注意点:1.n为正数,负数,0;2.INT_MIN的相反数不是INT_MAX
*/
class Solution {
public:
double pow(double x, int n) {
if (n == 0)
return 1.0;
if (n < 0) {
if (n == INT_MIN)
return 1.0 / (pow(x, INT_MAX)*x);
else
return 1.0 / pow(x, -n);
}
double tmp = pow(x, n >> 1);
if (n % 2 == 0)
return tmp*tmp;
else
return tmp*tmp*x;
}
};
本文介绍了使用二分法优化幂运算实现的算法,详细解释了处理正数、负数和特殊情况(如INT_MIN)的方法,确保复杂度为O(lgn)。
1388

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



