题目描述
给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent 。求 base 的 exponent 次方。
解题思路
-
首先考虑 base 和 exponent 的取值范围,如下图所示:
-
时间复杂度 O(n) :使用 base 相乘 exponent 次求整数次方。
-
时间复杂度 O(logn) :快速幂求解。
代码
public class Solution {
public double Power(double base, int exponent) {
int index = 0;
double res = 1;
if(exponent > 0){
index = exponent;
}else if(exponent < 0){
if(base == 0){
return -1;
}
index = -exponent;
}else{
if(base == 0){
return 0;
}
return 1;
}
while(index != 0){
if((index & 1) == 1){
res *= base;
}
base *= base;
index = index >> 1;
}
return exponent>0?res:(1/res);
}
}
文章汇总见这里 >>剑指Offer汇总<<
更多精彩文章见这里 >>我的学习小站<< & 更多好玩见这里 >>技术杂谈<<