博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——面试题11:数值的整数次方
阅读量:2254 次
发布时间:2019-05-09

本文共 1108 字,大约阅读时间需要 3 分钟。

剑指offer——面试题11:数值的整数次方

Solution1:基本算法

累乘,时间复杂度为O(n)
要考虑全部情况:指数 < 0, == 0 和 > 0.
注意在 if…else if的语句中最后一个最好写成else,否则在牛客网上编译报错

class Solution {public:    double Power(double base, int exponent) {        double res=1.0;        if(exponent>0){            while(exponent-->0)                res*=base;            return res;        }        else if(exponent == 0){            return res;        }        else {            int abs_exp=-exponent;            while(abs_exp-->0)                res*=base;            return (1.0/res);        }    }};

Solution2:

优化版的算法:时间复杂度 O(logn) O ( l o g n )
当n为偶数: an=an/2an/2 a n = a n / 2 ∗ a n / 2
当n为奇数: an=a(n1)/2a(n1)/2a a n = a ( n − 1 ) / 2 ∗ a ( n − 1 ) / 2 ∗ a
书上的代码有坑,肾重啊肾重!

class Solution {public:    double Power(double base, int exponent) {        int abs_exp = abs(exponent);        if (abs_exp == 0)            return 1;        else if (abs_exp == 1)            return base;        double res = Power(base, abs_exp/2);        res *= res;        if (abs_exp & 1)            res *= base;        if (exponent < 0)            res = 1/res;        return res;    }};

转载地址:http://ethdb.baihongyu.com/

你可能感兴趣的文章
redis好书推荐
查看>>
教你免费拥有Redis
查看>>
【Redis最佳实践】使用DCS Redis实现分布式锁
查看>>
Sqlite注入测试
查看>>
SQLite手工注入方法小结
查看>>
Window关闭端口的方法(445/135/137/138/139/3389等)
查看>>
Discuz!X 3.4 任意文件删除漏洞复现过程(附python脚本)
查看>>
Empire安装和试用
查看>>
【权限维持】window服务端常见后门技术
查看>>
Waf-Bypass-Learning
查看>>
手机验证码常见漏洞总结
查看>>
PHP代码审计笔记--任意文件下载漏洞
查看>>
PHP代码执行函数总结
查看>>
PHP反序列化漏洞
查看>>
PHP代码审计笔记--命令执行漏洞
查看>>
CPU特性漏洞测试(Meltdown and Spectre)
查看>>
面试题13 - 用两个栈实现队列 【栈】
查看>>
[Php] Realize Php
查看>>
[C++] 关于C++ const 的全面总结
查看>>
面试题 31: 求子数组的最大和
查看>>