【剑指Offer 16】数值的整数次方

/**
* 剑指 Offer 16. 数值的整数次方
* https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/
*
* 思路:快速幂
* x^n = x^a * x^b (n=a+b)
* 13 = 1101 (十进制转二进制)
* x^13 = (1 * x^8) * (1 * x^4) * (0 * x^2) * (1 * x^1) (0 表示不计入结果)
* */
public class Solution {
public double myPow(double x, int n) {
double result = 1.0;
// 将 -n 转成整数处理
double base;
if (n < 0) {
base = 1 / x;
n = -n;
} else {
base = x;
}
// 计算 n 次方
while (n != 0) {
if ((n & 1) == 1) {
result *= base;
}
n = n >>> 1;
base *= base;
}
return result;
}
}
posted @   廖子博  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示