50. Pow(x, n)

Implement pow(x, n), which calculates x raised to the power n (i.e., xn).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Example 1:

Input: x = 2.00000, n = 10
Output: 1024.00000

Example 2:

Input: x = 2.10000, n = 3
Output: 9.26100

Example 3:

Input: x = 2.00000, n = -2
Output: 0.25000
Explanation: 2-2 = 1/22 = 1/4 = 0.25

Constraints:

  • -100.0 < x < 100.0
  • -231 <= n <= 231-1
  • -104 <= xn <= 104

Solution

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
    public double myPow(double x, int n) {
        long N = n;
        if (n < 0) {
            x = 1.0 / x;
            N = -N;
        }
        
        long i = N;
        double res = 1.0;
        double current = x;
        while (i > 0) {
            if (i % 2 == 1) {
                res = res * current;
            } 
            
            current = current * current;
            i = i / 2;
        }
        
        return res;
    }
}

Solution 2021-11-19

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
class Solution {
    public double myPow(double x, int n) {
        long N = n;
        if (n < 0) {
            x = 1 / x;
            N = -N;
        }
        double ans = 1.0;
        for (long i = N; i > 0; i = i / 2) {
            if (i % 2 == 1) {
                ans = ans * x;
            } 
            x = x * x;
        }
        return ans;
    }
}

Solution 2021-01-30

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
    public double myPow(double x, int n) {
        long m = n;
        if (m == 0) return 1;
        if (m < 0) {
            m = -m;
            x = 1 / x;
        }
        
        double base = x;
        long degree = 1L;
        while (degree < m) {
            x = x * x;
            degree *= 2;
        }
        
        while (degree-- != m) {
            x /= base;
        }
        return x;
    }
}