day67(1.26)——leetcode面试经典150

50. Pow(x, n)

50. Pow(x, n)

"幂为奇数" ⇨ "二进制最低位为 1" ⇨ "当前这个 2ᵏ 项要包含在结果中"

题目:

题解:

java 复制代码
class Solution {
    public double myPow(double x, int n) {
        if(x == 0.0f) {
            return 0.0d;
        }
        //用快速幂进行计算
        // 算法流程:
        // 当 x=0.0 时:直接返回 0.0 ,以避免后续 1 除以 0 操作报错。分析: 数字 0 的正数次幂恒为 0 ; 0 的 0 次幂和负数次幂没有意义,因此直接返回 0.0 即可。
        // 初始化 res=1 。
        // 当 n<0 时:把问题转化至 n≥0 的范围内,即执行 x=1/x ,n=−n 。
        // 循环计算:当 n=0 时跳出。
        // 当 n&1=1 时:将当前 x 乘入 res (即 res∗=x )。
        // 执行 x=x 
        // 2
        // (即 x∗=x )。
        // 执行 n 右移一位(即 n>>=1)。
        // 返回 res 。

        //为了防止整数溢出,所以必须直接赋值给m,再进行-
        long m = n;
        double res = 1.0;
        if(n<0) {
            x=1.0/x;
            m=-m;
        }
        while(m>0) {
            //如果幂是奇数
            if((m&1)==1) {
                res*=x;
            }
            x*=x;
            m>>=1;
        }
        return res;
    }
}
相关推荐
leoufung13 小时前
LeetCode 135. Candy:从直觉到最优解的完整推导
算法·leetcode·职场和发展
WHS-_-202213 小时前
Tensor-Based Target Sensing for Resource-Irregular ISAC Systems
linux·人工智能·算法
成都易yisdong14 小时前
高程异常计算器:一款集成Geoid、重力场与地磁场的专业工具
算法
王老师青少年编程14 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【反悔贪心】:种树
c++·算法·贪心·反悔贪心·csp·信奥赛·种树
南宫萧幕14 小时前
基于 PSO 的 HEV 能量管理策略:从联合仿真建模到排错实战
开发语言·python·算法·matlab·控制
IT 青年14 小时前
网安面试经(13)
面试·网安
生物信息与育种14 小时前
全基因组重测序及群体遗传与进化分析技术服务指南
人工智能·深度学习·算法·数据分析·r语言
AI人工智能+电脑小能手14 小时前
【大白话说Java面试题】【Java基础篇】第23题:ConcurrentHashMap的底层原理是什么
java·开发语言·算法·哈希算法·散列表·hash
葳_人生_蕤14 小时前
hot100——回溯和DFS、BFS
算法·深度优先