LeetCode 50.Pow(x, n)
计算x的n次幂函数。
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1] 。
解析:
- 负数的边界 -2^31 , 直接转正数会越界。
正数边界2^31 − 1,负数转正2^31,越界。
所以将n的类型int转为类型long。 - 次幂n是负数,首先要转正,将1/x,再-n转正。
- 如果次幂是单数,我们先保留下x,将次幂n-1,再在最终结果res乘x。
- 因为二分查找每次减半(i/2),所以我们从后向前循环。
- 如果 i 取模2为1,证明幂次为单数,我们就要乘一次之前保留的x值。
- 走到最后都会进入if(i % 2 == 1),这个判断,得到最终res值。
二分查找
class Solution {
public double myPow(double x, int n) {
long N = n;