剑指Offer(第二版)面试题16:数值的整数次方
来源:互联网 发布:淘宝手机助手安卓版 编辑:程序博客网 时间:2024/06/06 03:19
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/73368916冷血之心的博客)
剑指Offer(第二版)面试题16:数值的整数次方
题目:请实现一个函数,功能类似与Math.power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题
思路:该题主要考察代码的完整性,即必须考虑底数为0和指数为负数的情况,力求写出完整的代码。
在方法2中我们使用了递归的思路,即从下到上依次计算。相求16次方,则先求8次方,先求4次方。。。
/** * 剑指Offer(第二版)面试题16:数值的整数次方 * 题目:请事先一个函数,功能类似与Math.power(double base, int exponent), * 求base的exponent次方。不得使用库函数,同时不需要考虑大数问题 * @author ywq */public class Main {public static void main(String[] args) {System.out.println(PowerEst(2, 4));}/** * 方法1:常规解法,时间复杂度为O(N) * @param base * @param exponent * @return */public static double Power(double base, int exponent) { if(base==0) return 0; double result = 1.0; for(int i = 1;i<=Math.abs(exponent);i++){ result *= base; } return exponent>0?result:1/result;}/** * 方法2:递归解法,时间复杂度为O(logN) * @param base * @param exponent * @return */public static double PowerEst(double base, int exponent) { if(base==0) return 0; int n=Math.abs(exponent); if(n==0) return 1; if(n==1) return base; double result=PowerEst(base,n>>1); result*=result; if((n&1)==1) result*=base; if(exponent<0) result=1/result; return result; }}
细节问题:
(1)方法2 中使用了右移运算符代替了除以2,效率高
(2)方法2 用位与运算代替了求余运算符(%)来判断一个数是奇数还是偶数
如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以进群366533258一起交流学习哦~
本群给大家提供一个学习交流的平台,内设菜鸟Java管理员一枚、精通算法的金牌讲师一枚、Android管理员一枚、蓝牙BlueTooth管理员一枚、Web前端管理一枚以及C#管理一枚。欢迎大家进来交流技术。
阅读全文
4 0
- 剑指Offer(第二版)面试题16:数值的整数次方
- 剑指offer--面试题16:数值的整数次方
- 【剑指offer】面试题16:数值的整数次方
- 【剑指offer】面试题16:数值的整数次方
- 剑指Offer面试题11(Java版):数值的整数次方
- [剑指offer][面试题11]数值的整数次方
- 【剑指offer】面试题11:数值的整数次方
- 剑指offer 面试题11 数值的整数次方
- 剑指Offer:面试题11 数值的整数次方
- 《剑指Offer》面试题11:数值的整数次方
- 【剑指Offer学习】【面试题11 :数值的整数次方】
- 《剑指Offer》面试题:数值的整数次方
- 剑指offer-面试题11:数值的整数次方
- 剑指offer-面试题11.数值的整数次方
- 剑指offer之面试题11:数值的整数次方
- 剑指offer----面试题11:数值的整数次方
- 剑指offer之面试题11数值的整数次方
- 剑指Offer--面试题11 数值的整数次方
- Intellij idea 的maven项目如何通过maven自动下载jar包
- eclipse中插件windowBuilder的使用
- php关键字区分
- Android_View与Activity的转化
- list四种遍历方式
- 剑指Offer(第二版)面试题16:数值的整数次方
- 文章标题
- 中文乱码+eclipse
- 【DRP】图片上传(第二种)
- mybatis集成spring
- C++释放类的静态指针成员
- MTK 功能机编译
- Neutron GRE模式要注意的问题
- 5. 变量(Variables)