码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 50 Pow(x,n)

时间:2019-10-28 13:00:59      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:暴力   输入   fast   minus   数值   code   时间复杂度   链接   范围   

问题:

实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例 1:

输入: 2.00000, 10
输出: 1024.00000
示例 2:

输入: 2.10000, 3
输出: 9.26100
示例 3:

输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:

-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/powx-n
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

分析:

求x的n次幂,要是直接用暴力循环解决的话,即使是时间复杂度是O(n),但是n过大也会时间超时。所以借鉴二分查找的思想,每次算出n/2的值,即可解对。

用递归解决。

递归的条件:1.有循环,并且循环不是通常的那种,第二,循环到底有边界。

代码:

class Solution {
private double fastPow(double x,long N){
if(N==0){
return 1.0;
}
double half = fastPow(x,N/2);
if(N%2==0){
return half*half;
}else{
return half*half*x;
}
}
public double myPow(double x, int n) {
double powNum = 1;
long N = n;
if(N<0){
x = 1/x;
N = -N;
}

return fastPow(x,N);
}
}

LeetCode 50 Pow(x,n)

标签:暴力   输入   fast   minus   数值   code   时间复杂度   链接   范围   

原文地址:https://www.cnblogs.com/gmzqjn/p/11751199.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!