剑指 Offer 16. 数值的整数次方
https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/
与运算与位运算可以参考
暴力求解会超时
- class Solution:
- def myPow(self, x, n):
- res=1
- if n>=0:
- for i in range(n):
- res=res*x
- return res
- else:
- for i in range(-1*n):
- res=res*x
- return 1/res

怎么就算X的次幂,每次循环令x=x*x即可
- class Solution:
- def myPow(self, x, n):
- res=1
- if n>=0:
- while n:
- if n&1:#判断n的二进制最后一位是否为1
- res=res*x
- x*=x
- else: x*=x
- n=n>>1
- else:
- n=-n
- x=1/x
- while n:
- if n&1:#判断n的二进制最后一位是否为1,等同于n%2
- res=res*x
- x*=x
- else: x*=x
- n>>=1#等同于n//2
- return res
- a=Solution()
- print(a.myPow(2,10))
- print(a.myPow(2,-2))