• 【剑指offer】16.数值的整数次方


    16.数值的整数次方

    面试题

    难度中等14

    实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。

    示例 1:

    输入: 2.00000, 10
    输出: 1024.00000
    ​

    示例 2:

    输入: 2.10000, 3
    输出: 9.26100
    ​

    示例 3:

    输入: 2.00000, -2
    输出: 0.25000
    解释: 2-2 = 1/22 = 1/4 = 0.25

    1.暴力

    如果n<0 x= 1/x n = -n 遍历求解 result = result * x;

    time:O(n)

    space:O(1)

    public double myPow(double x, int n) {
            if(n<0){//如果负数 1/x  n = -n
                x = 1/x;
                n = -n;
            }
    ​
            double result = 1.0f;
            for(int i = 0;i<n;i++){
                result = result *x;
            }
            return result;
        }

    2.快速幂算法

    time : O(logn)

    space:O(logn)

    public double myPow(double x, int n) {
            if(n<0){//如果负数 1/x  n = -n
                x = 1/x;
                n = -n;
            }
    ​
            return quickPow(x,n);
        }
    ​
        public double quickPow(double x,int n){
            if(n == 0){
                return 1.0f;
            }
    ​
            double half = quickPow(x,n/2);
    ​
            if((n & 1) == 0){
                return  half * half;
            }else{
                return  half * half * x;
            }
        }

    3.快速幂算法-循环版

    time : O(logN)

    space:O(1)

    public double myPow(double x, int n) {
            if(n == 0){
                return 1;
            }
    ​
            if(n < 0){
                x = 1/x;
                n = -n;
            }
    ​
            double result = 1;
    ​
            for(int i = n;i>=0;i/=2){
                if((i & 1) == 1){
                    result *= x;
                }
                x *= x;
            }
    ​
            return result;
        }
    
  • 相关阅读:
    特殊字符大全
    ASP執行文件下載
    在 Access 里使用查询建立 存储过程/视图, 并使用 ASP 执行
    通過windows的排定工作來執行存儲過程
    前台页面中用js取得eWebEditor的值
    IE7外觀優化
    电话订票
    在BIOS设置“扩展或板载”显卡的方法
    子窗口中操作父窗口对像(javascript)(转)
    mailto用法
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860661.html
Copyright © 2020-2023  润新知