Pow(n, x)题目总结

本文解析了LeetCode上的两道关于幂计算的题目:判断一个整数是否为2的幂次方,以及实现Pow(x, n)方法。介绍了如何处理负数越界问题,并通过位运算提高计算效率。
部署运行你感兴趣的模型镜像
有关计算一个数幂的题目考查我们对于边界问题的处理,比如如何处理负数越界问题,以及如何通过位运算提高运算速度。这里列举leetcode中有关pow()方法的两道题目。

[b]1,Power of Two[/b]
给定一个整数,判断这个数是否是2的幕。

这道题目比较简单,我们通过位与运算就可以解决,有关位运算的知识大家可以参考[url=http://kickcode.iteye.com/blog/2260251]位运算[/url]这篇文章。代码如下:

public class Solution {
public boolean isPowerOfTwo(int n) {

if(n < 0) return false;
return (n & (n-1)) == 0;
}
}


[b]2,Pow(x, n)[/b]
实现Pow(x, n)方法。x为double型,n为int型。

这道题目考查我们如何处理越界问题,例如n为-128时,我们如果直接取绝对值,这时n就会越界,我们要单独考虑这种情况。其次为了提高运算速度,我们用位移来处理每次运算。实现代码如下:

public class Solution {
public double myPow(double x, int n) {
if(n == 0)
return 1.0;
if(n < 0) {
if(n == Integer.MIN_VALUE)
return 1.0 / (myPow(x, Integer.MAX_VALUE) * x);
return 1.0 / myPow(x, -n);
}
double ans = 1.0 ;
for(; n > 0; n >>= 1) {
if((n & 1) > 0)
ans *= x;
x *= x;
}
return ans;
}
}

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值