leetcode 50. Pow(x, n)

题目链接

知识点

  • n 的取值可能是正数、0、负数
  • n < 0 时,pow(x, n) 转换为 pow(1/x, -n) 将 n 都换为正数
  • n 的取值范围 [−2^31, 2^31 − 1] ,取最小值的时候 -n 取不到
  • “二分”时间复杂度 logN

代码

class Solution {
public:
    double myPow(double x, int n) {
        
        if(n==0) return 1.0;
        if(n==1) return x;
        
        int t = n / 2; //解决 n 取最小值时 -n 取不到的情况
        if(n < 0){
            
            t = -t;
            x = 1 / x;
        }
        
        double ans = myPow(x, t);
        
        if(n % 2 == 0)    return ans*ans;
        else            return x*ans*ans; //奇数项多乘一次 x
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode 50 Pow(x, n) Implement pow(x, n). 遇到math类的题,比如po...
    ShuiLocked阅读 2,033评论 1 2
  • 题目 Implement pow(x, n). 分析 将幂转化为2的次方即可。举例为:x10=(x5)2=((x2...
    persistent100阅读 257评论 0 0
  • Implement pow(x, n). 题意:求x的n次幂 水题直接上代码了: java代码:
    关玮琳linSir阅读 248评论 0 5
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. Description 2. S...
    SnailTyan阅读 378评论 0 0
  • 妈妈,你这是在乞讨吗? 新加了个群,大家都不怎么熟。有一天,某一宝妈发1分钱红包请大家砍价1个课程,因为此课程宣传...
    Ee有阅读 160评论 0 0