Post

Pow(x, n)

LeetCode https://leetcode.cn/problems/powx-n/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {

    public double myPow(double x, int n) {

        if (x == 0 && n <= 0) {
            return -1;
        } else if (n < 0) {
            return 1.0 / myPowHelper(x, -n);
        } else {
            return myPowHelper(x, n);
        }
    }

    private double myPowHelper(double x, int n) {

        // base case
        if (n == 0) {
            return 1;
        }

        double halfResult = myPowHelper(x, n/2);

        if (n % 2 == 0) {
            return halfResult * halfResult;
        } else {
            return halfResult * halfResult * x;
        }
    }
    
}

Complexity

  • Time = O(log(n))
  • Space = O(log(n))

This post is licensed under CC BY 4.0 by the author.