leetcoder-50-Pow(x, n)

原创 2015年07月09日 16:46:30

                                             Pow(x, n)

 可以直接用库函数pow(x,n)一步搞定,但明显这样就没意思了。


  参考   快 速 幂 取 模


二分,复杂度为O(logn)

递归方法

class Solution {
public:
    double myPow(double x, int n) {
        if(n<0) return 1.0/myPow_1(x,-n);
        else return myPow_1(x,n);
    }
    double myPow_1(double x,int n)
    {
        if(n==0) return 1.0;
        double y=myPow_1(x,n/2); // 不能用n>>1 T_T   不知道什么原因
        if(n&1) return y*y*x;
        else return y*y;
    }
};



位运算

class Solution {
public:
    double myPow(double x, int n) {
        if(n<0){
            n=-n;
            x=1.0/x;
        }
        
        double ans=1;
        while(n){
            if(n&1) ans=ans*x;
            x=x*x;
            n=n/2;
        }
        return ans;
    }
};


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LeetCoder第一题

题目:http://oj.leetcode.com/problems/two-sum/

LeetCode 第 50 题 (Pow(x, n))

LeetCode 第 50 题 (Pow(x, n)) Implement pow(x, n). 这个题目非常简短,求 xnx^n。其中nn 为整数。 最简单的想法就是用一个循环,将 xx 自乘...

【LeetCode】50. Pow(x, n)

【LeetCode】50. Pow(x, n)

DAY21:leetcode #50 Pow(x, n)

Implement pow(x, n). Subscribe to see which companies asked this question class Solution(object):...

[leetcode] #50 Pow(x,n)

1.题目Implement pow(x, n).也就是要求实现幂的计算。2.蛮力法首先想到的当然是蛮力法,直接乘它个n次:double myPow(double x, int n) { for...

leetcode 50. Pow(x, n)-细说边界问题

原题链接:50. Pow(x, n) 【思路-Java】递归实现 采用递归实现,那么本题的终止条件是 n == 0 和 n == 1。这里不采用下面的做法: public class Solution...

LeetCode Algorithms 50. Pow(x, n) 题解

题目: Implement pow(x, n). 没有特殊要求,根据题目要求的输入,是(double x, int n),那么最大的阶数是MAX_INT,最小的阶数是MIN_INT。首先想到的是...

Leetcode 50 Pow(x, n) 两种方式求解

50. Pow(x, n) My Submissions Question Total Accepted: 85668 Total Submissions: 307134 Diffic...

[LeetCode-50] Pow(x, n)(数值的整数次方)

Implement pow(x, n). Subscribe to see which companies asked this question 【方法一】: 1)最直观容易想到的方法就是用递...

50. Pow(x, n)

pow(x , n)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)