数值的整数次方
实现函数double Power(double base, int exponent),求base的 exponent次方。
不得使用库函数,同时不需要考虑大数问题。
注意:
不会出现底数和指数同为0的情况
当底数为0时,指数一定为正
样例1
输入:10 ,2
输出:100
样例2
输入:10 ,-2
输出:0.01
暴力
时间复杂度O(n)
class Solution {
public double Power(double base, int exponent) {
if(exponent == 0){
return 1;
}
double num = 1;
if(exponent > 0){
for(int i = 0;i < exponent;i++){
num *= base;
}
return num;
}
for(int i = 0;i > exponent;i--){
num /= base;
}
return num;
}
}
快速幂
时间复杂度O(logn)
class Solution {
public double Power(double base, int exponent) {
boolean flag = true;
if(exponent < 0){
flag = false;
exponent = -1 * exponent;
}
double res = 1;
while(exponent != 0){
if((exponent & 1) != 0){
res = res*base;
}
exponent = exponent >> 1;
base = base * base;
}
if(flag){
return res;
}
else return 1/res;
}
}