50. Pow(x, n)

# Medium

It's not like medium problem. The key is to consider two cases:

  1. n >= 0

  2. n < 0

Binary Search

class Solution:
    def myPow(self, x: float, n: int) -> float:
        # edge case
        if abs(n) == 0:
            return 1
        
        # regular case
        if n&1 == 0:
            result = self.myPow(x, n//2)
            result = result*result
        else:
            if n > 0:
                result = self.myPow(x, n//2)
                result = result*result*x
            else:
                result = self.myPow(x, n//2+1)
                result = result*result/x

        return result

Last updated