[Leetcode] 50. Pow(x, n) 解题报告

来源:互联网 发布:js select 赋值选中 编辑:程序博客网 时间:2024/06/05 00:22

题目

Implement pow(xn).

思路

求幂、求平方根等题目的最优解法就是二分了。本题需要注意的地方在于:1)指数为负数的情况;2)指数为0的情况;3)指数为奇数和偶数的不同情况。时间复杂度为O(logn)。

从理论上来讲,Pow(0,0)是没有定义的,下面的代码实际上返回了1。在面试中最好和面试官沟通这种特殊情况如何处理。

代码

class Solution {public:    double myPow(double x, int n)     {        return Pow(n < 0 ? 1 / x : x, n);    }private:    double Pow(double x, int n)    {        if(n == 0)                  return 1;       // special case        else if(n == 1 || n == -1)  return x;       // base case        double half = Pow(x, n/2);        return half * half * (n % 2 == 0 ? 1 : x);    }};



0 0
原创粉丝点击