[LeetCode]50. Pow(x, n)(java实现)快速幂
1. 题目
2. 读题(需要重点注意的东西)
思路(快速幂):
n极大,一个个乘会超时,因此要使用快速幂来求pow(x,n);
其思想与[AcWing]875. 快速幂(C++实现)快速幂模板题完全相同,在此不再赘述。
3. 解法
---------------------------------------------------解法---------------------------------------------------:
class Solution {
public double myPow(double x, int n) {
long m = n;
double res = qmi(x,Math.abs(m));
if(m < 0) return 1/res;
return res;
}
public double qmi(double a,long k){
double res = 1;
while(k > 0){
if((k & 1) == 1) res *= a;
k >>= 1;
a *= a;
}
return res;
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 快速幂
6. 总结
快速幂模板题