1. 问题
实现幂运算。标签为二分搜索。
幂运算在面试中经常会被考查到,借此机会熟悉熟悉。
2. 思路
二分搜索的简单应用,需要注意的是当 n 为负数,或是 INT_MIN 时的情况。
INT_MIN 的负数是 INT_MAX + 1(无法用整数表示)
3. 实现
class Solution {
public:
double myPow(double x, int n) {
if (n == 0)
return 1;
if (n < 0) {
if(n==INT_MIN)
return 1.0/(myPow(x, INT_MAX) * x);
else
return 1.0/myPow(x, -n);
}
double half = myPow(x, n/2);
if (n % 2 == 0)
return half * half;
else
return half * half * x;
}
};