• [LeetCode] Pow(x, n)


    Implement pow(xn).

    思路:可以连乘,但会超时,所以使用二分法:

    注意几点:

    1 不要写成pow(x, n/2)* pow(x, n/2) 还是会超时,因为还是会计算两遍,直接使用临时变量tmp= pow(x, n/2),然会return tmp*tmp

    2 注意int 有可能为负数

    3 注意对于INT_MIN 的处理,他比INT_MAX 的绝对值大于1,直接判读小于0,return pow(x,-n)会越界,所以使用long long 保证其64位,不会越界

    class Solution {
        public:
            double pow(double x, int n)
            {
                long long ln = n;
                return powl(x, ln);
            }
            double powl(double x, long long n)
            {
                if(n < 0)
                    return 1/powl(x, -n);
                if(n == 0)
                    return 1;
                if(n == 1)
                    return x;
    
                if( n & 0x1 == 1)
                {
                    double tmp = powl(x, n/2);
                    return tmp* tmp * x;
                }
                else
                {
                    double tmp = powl(x, n/2);
                    return tmp* tmp ;
                }
    
            }
    };
  • 相关阅读:
    Linux
    C/C++ 引入头文件时 #include<***.h> 与 #include"***.h" 区别
    2018.01.10
    java 选择结构if
    引用数据类型 Scanner Random
    java 运算符
    java变量和数据类型
    Java se基础
    数据库设计
    MySQL 其他基础知识
  • 原文地址:https://www.cnblogs.com/diegodu/p/4313305.html
Copyright © 2020-2023  润新知