[LeetCode OJ]Pow(x, n)

来源:互联网 发布:网红们用的美图软件 编辑:程序博客网 时间:2024/05/17 07:38

Implement pow(xn).

问题描述及其简单,求幂。

开始时候觉得n的正负号不是问题,后来发现还是要分类考虑的,网上提供了两种思路,一种是二分,一种是移位。

class Solution {public:    double pow(double x, int n) {        if (n == 0)             return 1.0;        double half = pow(x, n/2);        if (n%2 == 0)        {            return half*half;        }        else if (n>0)        {            return half*half*x;        }        else        {            return half/x*half;        }    }};

还是挺不好想的呢。

class Solution {public:    double pow(double x, int n) {        double result = 1.0;        double temp = x;                unsigned int m;                n < 0 ? m = -1 * n : m = n;                while(m) {            if(m & 1) {                result = result * temp;            }            m = m>>1;            temp *= temp;        }                if(n < 0) {            return 1/result;        }        else {            return result;        }    }};

移位的思想还是蛮有用的,以后除以2、乘以2的,都可以用。

0 0
原创粉丝点击