zoukankan      html  css  js  c++  java
  • leetcode笔记:Pow(x, n)

    一. 题目描写叙述

    Implement pow(x, n).

    二. 题目分析

    实现pow(x, n)。即求xn次幂。

    最easy想到的方法就是用递归直接求nx的乘积,这里须要依据n的值,推断结果是正数还是负数,这样的方法的时间复杂度为O(n)

    更加快捷的方法是。使用分治法。对于x^n。有一下公式:

    x^n = x^(n / 2) *  x^(n / 2) * x^(n % 2)

    使用这样的方法的时间复杂度为O(logn)

    三. 演示样例代码

    #include <iostream>
    
    using namespace std;
    
    class Solution {
    public:
        double pow(double x, int n) 
        {
            if (n == 0)
                return 1;
            if (n > 0) 
                return power(x, n);
            else 
                return 1 / power(x, -1 * n);
            }
    
    private:
        double power(double x, int n) 
        {
            if (n == 0) 
                return 1;
            double a = power(x, n / 2); // 递归求x^(n/2)
            if (n % 2 == 0) 
                return a * a;
            else 
                return a * a * x;
        }
    };

    这里写图片描写叙述

    四. 小结

    此题为分治思路的经典题型之中的一个。

  • 相关阅读:
    STM32寄存器的简介、地址查找,与直接操作寄存器
    SPI初始化寄存器配置
    docker 命令
    SpringBoot接口格式和规范
    算法
    RabbitMQ
    UML概念
    activeMQ和JMS
    设计模式七大原则
    redis缓存
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7222365.html
Copyright © 2011-2022 走看看