Leetcode 50. Pow(x, n)
文章目录
- 题目
- 代码(9.19 首刷看解析)
题目
Leetcode 50. Pow(x, n)
代码(9.19 首刷看解析)
快速幂
class Solution {
public:double myPow(double x, int n) {if(n == 0)return 1;if(n == 1)return x;if(n == INT_MIN) { // 避免-n整形溢出return myPow(1/x, -(n+1))/x;}if(n < 0) {return myPow(1/x, -n);}if(n % 2) {return (x*myPow(x, n-1));} else {double sub = myPow(x, n/2);return (sub*sub);}}
};
另一种解法
class Solution {
public:double myPow(double x, int n) {if(n == INT_MIN) { // 避免-n整形溢出return myPow(1/x, -(n+1))/x;}if(n < 0) {return myPow(1/x, -n);}double ans = 1, tmp = x;while(n != 0) {if(n & 1 != 0) {ans = ans*tmp;}n>>=1;tmp = tmp*tmp;}return ans;}
};