标签:13 Offer double 16 base result 次方
/**
* 剑指 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;
}
}
标签:13,Offer,double,16,base,result,次方 来源: https://www.cnblogs.com/liaozibo/p/offer-16.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。