本文为剑指 offer 系列第十四篇。
细心一点,搞清楚正负逻辑,这个题目就是非常简单的送分题。
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
解题思路
思路1
直接使用库函数pow()来进行计算乘方操作。
思路2
对exponent进行分情况讨论:大于0,小于0,等于0。
然后要注意最终结果的正负判断。
解题代码
思路1代码
1 2 3 4 5 6
| class Solution { public: double Power(double base, int exponent) { return pow(base,exponent); } };
|
时间复杂度为O(n),空间复杂度为O(1)
思路2代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public: double Power(double base, int exponent) { double res = 1; if(exponent == 0){ return 1; }else if(exponent>0){ while(exponent >0){ res *= base; exponent--; } }else{ while(exponent <0){ res *= (1/base); exponent++; } } if(base < 0 && exponent%2 == 1) res *= -1; return res; } };
|
时间复杂度为O(n),空间复杂度为O(1)
以上,本题结束!