美文网首页算法
LeetCode题解:数的N次方

LeetCode题解:数的N次方

作者: 搬码人 | 来源:发表于2022-05-07 10:20 被阅读0次

题目描述

实现Pow(x,n),即计算x的n次幂函数(即,x^n)。

示例

  • 示例1
    输入:x = 2.00000, n = 10
    输出:1024.00000
  • 示例2
    输入:x = 2.10000, n = 3
    输出:9.26100
  • 示例3
    输入:x = 2.00000, n = -2
    输出:0.25000

方法思路

快速幂+递归
举个例子:我们要计算x^64,我们可以按照:

image.png
的顺序计算6次,就可以得到最终的结果。
再举一个例子:如果我们要计算x^77,我们可以按照:
image.png
的顺序,在最后一步之前我们得到x^76,只需要再将结果乘一个x就可以得到最终的结果。
class Solution {
    public double myPow(double x, int n) {
        long N = n;
        return N>0?quickMul(x,N) : 1.0/quickMul(x,-N);
    }
    public double quickMul(double x,long N){
        if(N==0){
            return 1.0;
        }
        ,double y = quickMul(x,N/2);
        return N%2==0? y*y : y*y*x;
    }
    
}

复杂度分析

  • 时间复杂度:O(logn),即为递归的层数。
  • 空间复杂度:O(logn),即为递归的层数。这是由于递归的函数调用会使用栈空间。

相关文章

  • LeetCode题解:数的N次方

    题目描述 实现Pow(x,n),即计算x的n次幂函数(即,x^n)。 示例 示例1输入:x = 2.00000, ...

  • 斐波那契数列 logn 实现

    对于fibonacci: logn主要是基于计算一个数的n次方的方法。 计算一个数的n次方的方法: 递归方式计算乘...

  • 次方

    次方最基本的定义:设a为某数,n为正整数,a的n次方表示为 aⁿ ,表示n个a连乘所得的积。如2³ = 2 * 2...

  • 如何判断一个数是否是2的n次方O(1)算法

    题目: 如何判断一个数是否是2的n次方思路:当一个数为2的n 次方时,整个二进制数,只有本位是1 其他位为0,如果...

  • C 语言实例32 - 判断Armstrong数(阿姆斯壮数)

    Armstrong 数又称水仙花数或超完全数字不变数,就是n位数的各位数的n次方之和等于该数,如:

  • 246. Strobogrammatic Number

    [LeetCode] Strobogrammatic Number 对称数 A strobogrammatic n...

  • LeetCode N皇后和数独的递归思路分析

    分析基于 LeetCode #51 N皇后 和 LeetCode #37 数独求解。 1. 寻找递归变量 N皇后问...

  • Excel表列序号(15-14)

    题解和思路 思路 代码如下 ps:进制转换的问题,26的N次方 复杂度分析 时间复杂度: O(n) 对于每个元素,...

  • LeetCode题解:完美数

    题目描述 给定一个正整数,如果它和除了它自身以外的左右正因子之和相等,我们称之为完美数。给定一个正整数n,如果是完...

  • LeetCode题解:回文数

    题目描述 给你一个整数x,如果x是一个回文整数,返回true;否则返回false。回文数是指正序度和倒叙读都是一样...

网友评论

    本文标题:LeetCode题解:数的N次方

    本文链接:https://www.haomeiwen.com/subject/boiturtx.html