zoukankan      html  css  js  c++  java
  • 力扣Leetcode 50. 实现Pow(x, n)

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

    解题思路

    暴力for循环想必是会超时 就得用到快速幂 对 & 运算运用不熟悉怕错 索性用类似二分这种每次循环只要算一半

    class Solution {
    public:
        double myPow(double x, int n) {
            // 加入特判
            if(n == 0 || x == 1) return 1;
            if(x == 0) return 0;
            double ans = 1; // 答案
            bool flag = true; // 用以标记指数正负 true为正
            flag = n > 0 ? true : false;
            if(!flag) n = abs(n); // 标记完正负后 取绝对值计算
            // 快速幂
            while(n > 0)
            {
              	// 只要计算一半
                if(n % 2 > 0) ans *= x;
                n /= 2; 
                x *= x;
            }
            return ans = flag ? ans : 1 / ans;
        }
    };
    

    顺利双百

    PS:每日一个面试被拒小技巧:直接return pow(x,n);

  • 相关阅读:
    博客最新博文通告
    博文快速导航
    创业
    央行回应中国版数字货币:与人民币等价 不会让钱贬值
    高屋建瓴
    高层人对事的处理
    老板的区别
    沟通的四大法则
    赚钱规则
    合伙做生意的原则
  • 原文地址:https://www.cnblogs.com/coderzjz/p/12868543.html
Copyright © 2011-2022 走看看