zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):050-Pow(x, n)


    题目来源


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

    Implement pow(xn).


    题意分析


    Input: x,n

    Output:pow(x,n)

    Conditions:满足一定的内存需求,算法复杂度低一些


    题目思路


    刚开始以为直接乘就好了,但是爆内存了,仔细看发现其实可以通过二分法利用每次乘的信息,注意到n可以为负数,所以预处理为正数先

    1. 预处理为正数
    2. 调用函数:初始化递归条件;二分;针对n为偶数和奇数返回相应值
    3. 根据预处理返回正确的值(如果是负数就要用1去除)

    AC代码(Python)

     1 class Solution(object):
     2     def myPow(self, x, n):
     3         """
     4         :type x: float
     5         :type n: int
     6         :rtype: float
     7         """
     8         def p(x, n):
     9             
    10             if n ==0:
    11                return 1.0
    12             half = self.myPow(x, n / 2)
    13             if n % 2 == 0:
    14                 return half * half
    15             else:
    16                 return half * half * x
    17         s = False
    18         if n < 0:
    19             n = -n
    20             s = True
    21         if s == True:
    22             return (1.0) / p(x, n)
    23         else:
    24             return p(x, n)
    25         
    26         
  • 相关阅读:
    5.1、字符串插入
    2.2、部署 Discuz!
    7.1.5、测试数组
    4.2、php 注释
    5.2、操作符
    2.3、初始化 Discuz!
    5.3、控制结构
    gradle 又一项目构建工具
    1.1、概述
    7.1.8、通过追加数组的方式创建数组
  • 原文地址:https://www.cnblogs.com/loadofleaf/p/5071389.html
Copyright © 2011-2022 走看看