题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
题目地址
思路
- 位运算 - 快速幂

-
示例
求 `3^20 = 9^10 = 81^5 (= 81*81^4) = 81*6561^2 = 81*43046721` 循环次数 = `bin(20)`的位数 = `len(10100)` = 5 -
时间复杂度
O(logN)
Code
class Solution {
public:
double Power(double base, int exponent) {
int p = abs(exponent);
double ret = 1.0;
while (p != 0) {
if (p & 1) // 如果是奇数
ret *= base;
base *= base;
p >>= 1;
}
return exponent < 0 ? 1 / ret : ret;
}
};

本文介绍了一种使用位运算实现快速幂算法的方法,用于计算浮点数的整数次幂。通过将指数转换为二进制并利用位运算,可以显著减少计算次数,从而提高效率。
895

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



