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

萌新一枚、个人记录~多多指教
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/powx-n
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述:
实现 pow(x, n),即计算 xn 次幂函数。

示例 1:
输入: 2.00000, 10
输出: 1024.00000

示例 2:
输入: 2.10000, 3
输出: 9.26100

示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2 − 2 2^{-2} 22 = 1 / 2 2 1/2^2 1/22 = 1/4 = 0.25

说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1] [231,2311]
这里注意n,可能为负

思路:
这里就是在原来n为正数的模板上,修改了一丢丢。感觉好像比较容易看懂吧~
这里输入是32位有符号整数,所以n 定义为int 型,在n1取最小值的时候会出错
所以我换成了long 型。不知道这种方法合不合规,但是效果是好的:)

class Solution {
public:
    double myPow(double x, long n) {//修改了n的变量类型 
        double ans=1;
        long n1=n;
        //如果n是负数,先转为正数求正结果,最后取倒数即可
        if (n < 0)
	    {
		n = ~n + 1;
	    }
        while(n > 0)
        {
            if(n & 1)
            ans = ans * x;

            n >>= 1;
            x = x * x;
        }
        if(n1 >= 0)
        return ans;
        else
        return 1/ans;
  }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值