码迷,mamicode.com
首页 > 其他好文 > 详细

50. Pow(x, n)

时间:2019-10-27 22:52:02      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:target   二分查找   ret   which   结果   变形   int   power   get   

50. Pow(x, n)
Medium

Implement pow(xn), which calculates x raised to the power n (xn).

Example 1:

Input: 2.00000, 10
Output: 1024.00000

Example 2:

Input: 2.10000, 3
Output: 9.26100

Example 3:

Input: 2.00000, -2
Output: 0.25000
Explanation: 2-2 = 1/22 = 1/4 = 0.25

Note:

  • -100.0 < x < 100.0
  • n is a 32-bit signed integer, within the range [−231, 231 − 1]

 

二分查找的变形题,直接暴力运算会超时. 可能会想到用dp数组来加速运算, 或者是递归.

注意负数的处理, 只要多加一个1 / x 即可. 而且只需要在最外层处理这个, 递归的时候只传绝对值

class Solution {
public:
    double myPow(double x, int n) {
        if(0==n)return 1;
        double d=myPow(x,abs(n/2)); //abs是为了配合处理负数,如果不加abs,计算结果会乱
        d= n%2? d*d*x:d*d;
        return n<0? 1/d:d;
    }
};

 

50. Pow(x, n)

标签:target   二分查找   ret   which   结果   变形   int   power   get   

原文地址:https://www.cnblogs.com/lychnis/p/11749278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!