leetcode--50--Pow(x, n)

题目:

实现 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] 。

题目链接:https://leetcode-cn.com/problems/powx-n

思路:
1、采用快速幂的做法,如果n是偶数,则 Pow(x, n) = Pow(x, n/2) * Pow(x, n/2)
如果 n是奇数,则 Pow(x, n) = Pow(x, n-1) * x
2、需要注意一些特殊情况,当 n<0, n=0, n=1的情况需要提前处理

Python代码:

class Solution(object):
    def myPow(self, x, n):
        """
        :type x: float
        :type n: int
        :rtype: float
        """

        if n<0:
            x = 1.0/x
            n *= -1
        elif n==0:
            return 1
        elif n==1:
            return x

        if n%2==0:
            half = self.myPow(x, n/2)
            return half*half
        else:
            return x*(self.myPow(x, n-1))

C++代码:

class Solution {
public:
    double myPow(double x, long long n) {
        if(n<0){
            x = 1.0/x;
            n *= -1;
        }else if(n==0){
            return 1;
        }else if(n==1){
            return x;
        }

        if(n%2==0){
            double half = myPow(x, n/2);
            return half*half;
        }else{
            return myPow(x, n-1) * x;
        }
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Pow(x, n) 实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1: 输入: 2.00000,...
    leacoder阅读 174评论 0 1
  • LeetCode 50 Pow(x, n) Implement pow(x, n). 遇到math类的题,比如po...
    ShuiLocked阅读 2,031评论 1 2
  • ** 题目描述:**实现 [pow(x, n)],即计算 x 的 n 次幂函数。 思路:采用分治的思想,将n次幂转...
    大数据Zone阅读 218评论 0 1
  • 题目 Implement pow(x, n). 分析 将幂转化为2的次方即可。举例为:x10=(x5)2=((x2...
    persistent100阅读 255评论 0 0
  • 由七夕想到了你 作者/清秋致远 黄昏 我的目光 在一枚叶子上攀爬 风 卷起知了的叫喊 我是你遗忘的风景 你的转身 ...
    清秋致远阅读 125评论 0 0