Sunday, August 16, 2015

Leetcode 50. Pow(x, n)

https://leetcode.com/problems/powx-n/

One line slick solution:
        return x**n
Run Time is 52 ms.

Normal solution is not timing one by one, which is two slow. Recursion is a good approach, but some cases need to be considered: n is negative and n is odd.

Solution:
# T:O(lgn) S:O(lgn)
class Solution:
    # @param x, a float
    # @param n, a integer
    # @return a float
    def myPow(self, x, n):
        if n < 0:
            return 1 / self.powRecu(x, -n)
        
        return self.powRecu(x, n)
    
    def powRecu(self, x, n):
        if n == 0:
            return 1.0
        
        if n % 2 == 0:
            return self.powRecu(x * x, n / 2)
        else:
            return x * self.powRecu(x * x, n / 2)
Run Time: 56 ms

No comments:

Post a Comment