- Pow(x, n)
实现 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/22 = 1/4 = 0.25
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1] 。
1,传统方法去做,但是会超时,o(n)
class Solution {public double myPow(double x, int n) {if(n == 0) return 1.0;if(x == 1) return 1.0;boolean flag = false;if(n < 0) {flag = true;n = -n;}double ans = 1;for(int i = 0; i < n; i++){ans *= x;}if(flag == true) return 1.0/ans;return ans;}
}
2.利用二进制方法,将复杂度减小至o(logn)
class Solution {public double myPow(double x, int n) {if(n == 0) return 1.0;//在于题目如何定义//boolean flag = false;//其实可以不用flag,直接改变x即可long b = n;if(n < 0) {x = 1/x;b = -b;//这里变换符号之后容易越界}double ans = 1;while(b > 0){if((b&1) == 1) ans *= x;//也就是当前位位为1,保留相乘x *= x;b >>= 1;}return ans;}
}