Pow(x, n)

这道题不在于算法有多难,而在于要考虑各种情况的复杂判断,如n等于0,x等于0,x为负时奇偶幂次对正负的影响以及幂次为负时对值的影响,这么多case考虑下来这道题就不是很简单了,下面是自己写的代码,个人感觉写的已经比较干净了,虽然比不过discussion高票的那些

class Solution(object):
    def myPow(self, x, n):
        """
        :type x: float
        :type n: int
        :rtype: float
        """
        if n == 0:
            return float(1)

        if x == 0:
            return float(0)

        sign = True if n > 0 else False
        n = abs(n)

        result = self.helper(abs(x), n)
        if sign:
            if x > 0:
                return result
            return -result if n % 2 else result

        if x > 0:
            return 1 / result 

        return -1 / result if n % 2 else 1 / result

    def helper(self, value, time):
        if time == 0:
            return 1

        if time == 1:
            return value

        div, rem = divmod(time, 2)
        result = self.helper(value * value, div)
        return result * value if rem else result

results matching ""

    No results matching ""