【Leetcode 每日一题 - 扩展】50. Pow(x, n)

问题背景

实现 p o w ( x , n ) pow(x, n) pow(x,n),即计算 x x x 的整数 n n n 次幂函数(即, x n x_n xn)。

数据约束

  • − 100.0 < x < 100.0 -100.0 \lt x \lt 100.0 −100.0<x<100.0
  • − 2 31 ≤ n ≤ 2 31 − 1 -2 ^ {31} \le n \le 2 ^ {31} -1 −231≤n≤231−1
  • n n n 是一个整数
  • 要么 x x x 不为零,要么 n > 0 n \gt 0 n>0。
  • − 1 0 4 ≤ x n ≤ 104 -10 ^ 4 \le x_n \le 104 −104≤xn≤104

解题过程

快速幂,思想是任何一个幂都可以对半拆成两个规模减半的子问题,并用一次乘法来得到结果。

拆解过程中要计算的幂的指数,可以通过原问题的指数 n n n 的二进制表示来得到。

具体实现

java 复制代码
class Solution {
    public double myPow(double x, int n) {
        double res = 1.0;
        // 处理指数为负的情况,转化为乘倒数
        if(n < 0) {
            n = -n;
            x = 1 / x;
        }
        while(n != 0) {
            // 如果 n 的当前数位上为 1,那么对应的幂需要作为子问题计算并累乘
            if((n & 1) == 1) {
                res *= x;
            }
            x *= x;
            n >>>= 1; // 处理完之后右移消除掉当前位
        }
        return res;
    }
}
相关推荐
C雨后彩虹3 小时前
任务最优调度
java·数据结构·算法·华为·面试
少林码僧5 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)5 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
Niuguangshuo6 小时前
EM算法详解:解密“鸡生蛋“的机器学习困局
算法·机器学习·概率论
a3158238066 小时前
Android 大图显示策略优化显示(一)
android·算法·图片加载·大图片
一条大祥脚6 小时前
26.1.9 轮廓线dp 状压最短路 构造
数据结构·c++·算法
鲨莎分不晴7 小时前
反向传播的数学本质:链式法则与动态规划的完美共舞
算法·动态规划
sonadorje7 小时前
逻辑回归中的条件概率
算法·机器学习·逻辑回归
cici158747 小时前
基于Pan-Tompkins算法的ECG信号HRV提取方案
算法
McGrady-1757 小时前
拓扑导航 vs 几何导航的具体实现位置
算法