面试经典150题 P50 Pow(x, n) Created:2025-11-26 11:50:13Updated:2025-11-26 11:50:13algorithmalgorithm, leetcode面试经典150题, 快速幂, 数学字数 162阅读 访客 时间轴 时间轴2025-11-26init 数学 题目:如果直接循环n次,时间是O(n),会超时。利用快速幂:快速幂基于一个事实:如果 n 是偶数:xn=(x2)n/2x^n = (x^2)^{n/2} xn=(x2)n/2如果 n 是奇数:xn=x⋅xn−1x^n = x \cdot x^{n-1} xn=x⋅xn−1每次把 n 减半,因此时间复杂度是O(log n)。1234567891011121314151617181920212223242526class Solution { public: double myPow(double x, int n) { // 快速幂 long pow = (long)n; if (pow < 0) { x = 1 / x; pow = -pow; } double res = 1; while (pow > 0) { if ((pow & 0x1) == 0) { x = x * x; pow = pow / 2; } else { res *= x; pow = pow - 1; } } return res; }};