https://leetcode.com/problems/powx-n/
最开始没有认真考虑 没想过输入的正负
包括test cases里有很多内存不够 和超时
所以一边改一边写
写出了一个效率极低的解法 700ms+
class Solution:
# @param x, a float
# @param n, a integer
# @return a float
def pow(self, x, n):
a=x
temp=x
if n==0:
a=1
elif n>0:
for i in xrange(1,n):
a=x*a
if x==1:
a=1
break
if x==-1:
if n%2==0:
a=1
else:
a=-1
break
if a<0.0000001 and a>0:
a=0
break
else:#n<0 there are some problems below
for i in xrange(1,-n):
temp=x*temp
if x==1:
temp=1
break
if x==-1:
if n%2==0:
temp=1
else:
temp=-1
break
if temp>10000000:
a=0
break
a=1/temp
return a
还要想更合理的分类
下面的代码将n合并处理 也把x为1,-1的情况拿到for外面 看起来整洁多了 但是还是400ms左右
再问问大家有没有别的办法 因为python好像普遍效率在25-75ms左右
class Solution:
# @param x, a float
# @param n, a integer
# @return a float
def pow(self, x, n):
a=x
if x==1 or x==-1:
if n%2==0:
a=1
else:
a=x
return a
if n==0:
a=1
return a
else:
for i in xrange(1,abs(n)):
a=a*x
if a>0 and a<0.0000001:
a=0
return a
if n<0:
a=1/a
return a