题目:
计算Pow(x,n),即计算x的n次方,其中x是float型,n是整型
解题思路:
看到这个题目,首先考虑到不能直接计算x*x*x...*x,肯定会超时,所以考虑用二分法来计算。从n的复杂度转为logn的复杂度。计算思路为要计算Pow(x,n),可以用Pow(x,n/2)*Pow(x,n/2)替代,依次进行递归。需要注意的是要考虑n的奇偶性。
代码如下(python):
class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
def Pow(x,n):
if n==0:
return 1
else:
if n%2==1:
return Pow(x,n/2)*Pow(x,n/2)*x
else:
return Pow(x,n/2)*Pow(x,n/2)
if n<0:
return 1.0/Pow(x,-n)
else:
return Pow(x,n)
在leetcode中AC,且效率超过80%的提交