zoukankan      html  css  js  c++  java
  • LeetCode_Pow(x, n)

    Implement pow(x, n).
    

      

    class Solution {
    public:
        bool equal(double a, double b)
        {
            if(abs(a-b) < 0.0000001)
                return true;
            return false;
        }
        double powPos(double x, unsigned int n)
        {
            if( n == 0) return 1.0;
            if(n == 1) return x;
            double res = powPos(x, n>>1);
            res *= res ;
             if(n&0x01 == 1)
              res *= x;
            return res;
        }
        double pow(double x, int n) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if(n == 0)
                return 1.0;
            if(equal(x, 0.0))
                return 0.0;
        
            bool flag = n > 0 ? false : true; // 是否是负数
            if(flag)
                n *= -1;
                
            double res = powPos(x,  n);
            
            if(flag){
                if(equal(res, 0.0))
                    return 0.0;
                else 
                    return 1/res;
            }else
                return res;
        }
    };

     半分法,有个更加快的:http://blog.unieagle.net/2012/08/23/leetcode%E9%A2%98%E7%9B%AE%EF%BC%9Apowxn/

    --------------------------------------------------------------------天道酬勤!
  • 相关阅读:
    分解质因数
    记忆化搜索
    BFS(广度优先搜索)
    DFS(深度优先搜索)
    A*算法
    最小生成树
    最近公共祖先(LCA)问题
    k短路算法
    次短路问题
    拓扑排序
  • 原文地址:https://www.cnblogs.com/graph/p/3048270.html
Copyright © 2011-2022 走看看