中级农民
- 积分
- 103
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2019-1-7
- 最后登录
- 1970-1-1
|
don't know how to upload the screenshot, just paste the code here:
class Solution:
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
if n == 0:
return 1
if n > 0:
dp_table = {
0: 1,
1: x
}
if n < 0:
dp_table = {
0: 1,
1: 1/x
}
key_value = [1, 2]
idx = 1
while key_value[idx] <= abs(n):
dp_table[key_value[idx]] = (dp_table[key_value[idx] / 2]**2)
key_value.append(2 * key_value[idx])
idx += 1
key_value.pop()
rst = dp_table[key_value[-1]]
r = abs(n) - key_value[-1]
key_value.pop()
while r > 0:
while key_value[-1] > r:
key_value.pop()
rst = rst * dp_table[key_value[-1]]
r = r - key_value[-1]
key_value.pop()
return rst |
|