标签:整数 相关 超时 solution fast res 快速幂 注意 需要
实现 pow(x, n)
,即计算 x 的 n 次幂函数。
说明:
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: \(2^{-2}\) = \(1/2^2\) = 1/4 = 0.25
代码:
class Solution {
public double myPow(double x, int n) {
double result = 1;
for (long i = 0; i < Math.abs(n); i++) {
result *= x;
}
return n > 0 ? result : 1 / result;
}
}
代码:
class Solution {
public double fastPow(double x, long n) {
if (n == 0) {
return 1;
}
double sqrt = fastPow(x, n / 2);
if ((n & 1) == 0) {
return sqrt * sqrt;
}
return sqrt * sqrt * x;
}
public double myPow(double x, int n) {
long num = n;
if (n < 0) {
x = 1 / x;
num = -num;
}
return fastPow(x, num);
}
}
代码:
class Solution {
public double myPow(double x, int n) {
double result = 1;
double product = x;
for (int i = n; i != 0; i /= 2) {
if ((i & 1) != 0) {
result *= product;
}
product *= product;
}
return n > 0 ? result : 1 / result;
}
}
这道题主要考查二分,幂运算的快速幂运算。
也需要注意 int 的最小值取反后会超出 int 范围的问题,与补码知识相关。
标签:整数 相关 超时 solution fast res 快速幂 注意 需要
原文地址:https://www.cnblogs.com/qiu_jiaqi/p/LeetCode_50.html