每日一题 2019 - 04 - 01
题目:
Implement pow(x, n), which calculates x raised to the power n (xn).
Example 1:
1 | Input: 2.00000, 10 |
Example 2:
1 | Input: 2.10000, 3 |
Example 3:
1 | Input: 2.00000, -2 |
Note:
- -100.0 < x < 100.0
- n is a 32-bit signed integer, within the range
[−2^31, 2^31 − 1]
解法:
这个题让实现幂函数pow
,可以考虑使用移位来解决,但是在求负指数幂的时候容易引起精度的缺失,所以可以先将负指数幂转成正指数幂计算,输出结果时候求倒数。
当然这个题最关键的部分在于我们求幂积的过程,为了保证不超时,我们可以考虑如下算法:
- 先转幂数为二进制数字,随后写出数学推导,例如:
- 按照上面思路,我们就可以极大的减小时间复杂度,保证指数幂的变动有限次
代码:
1 | class Solution { |