题目描述
实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
输入输出
1 | 示例1: |
说明:
- -100.0< x <100.0
- n是32位有符号整数,其数值范围是[-2^31,2^31 -1]。
算法思路(二分法)
- 当n是偶数时,x^n = (x^2)^(n/2)
- 当n是奇数时,x^n = x(x^2)^(n/2),相比偶数多出了一项x
代码
1 | package leetcode; |
通过截图
复杂度分析
- 时间复杂度:O(logN)。跟二分操作的时间复杂度一样
- 空间复杂度:O(1)。没有引入额外的变量
ps:参考leetcode大佬Krahets的解答。