P10 数值的 n 次方
算法 70 阅读
信号摘要
难度:Medium · 时长:03:23 · leetcode 50 · lintcode 428
未对外公开播放权限
点击查看说明
描述
这个题目说的是,你要实现一个函数,用它来计算浮点数的 n 次方。
比如说,给你 2 和 11,你要计算出 2 的 11 次方的结果:f(2, 11) = 211
代码
public class AlgoCasts {
// Time: O(n), Space: O(1)
public double pow(double x, int n) {
double result = 1;
long N = Math.abs((long)n);
for (int i = 0; i < N; ++i)
result *= x;
return n < 0 ? 1/result : result;
}
// Time: O(log(n)), Space: O(1)
public double powFast(double x, int n) {
double result = 1;
long N = Math.abs((long)n);
while (N != 0) {
if ((N & 1) == 1) result *= x;
x *= x;
N >>= 1;
}
return n < 0 ? 1/result : result;
}
}