剑指offer之十一---数值的整数次方
来源:互联网 发布:海康录像机设备域名 编辑:程序博客网 时间:2024/05/19 22:06
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
时间限制:1秒空间限制:32768K热度指数:149847
我的思路二种:(比较菜)
思路一:库函数:
return Math.pow(base, exponent);//41ms 9120k
思路二:累乘
int count = 0;double positiveResult = base;double negtiveResult = 1.0 / base;if (exponent > 0) {while (count < exponent - 1) {positiveResult = positiveResult * base;count++;}return positiveResult;} else if (exponent == 0) {return 1.0;} else {while (exponent < -1) {negtiveResult = negtiveResult * (1.0 / base);exponent++;}return negtiveResult;}
大神的思路:
/**
* 1.全面考察指数的正负、底数是否为零等情况。
* 2.写出指数的二进制表达,例如13表达为二进制1101。
* 3.举例:10^1101 = 10^0001*10^0100*10^1000。
* 4.通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果。
*/
public static double Power(double base, int exponent) { double res = 1;int n;if (exponent > 0) {n = exponent;} else if (exponent < 0) {if (base == 0)throw new RuntimeException("分母不能为0");n = -exponent;} else {// exponent==0return 1;// 0的0次方}while (n != 0) {if ((n & 1) == 1)res *= base;base *= base;// 翻倍n >>= 1;// 右移一位}return exponent >= 0 ? res : (1 / res);}
阅读全文
0 0
- 剑指Offer算法实现之十一:数值的整数次方
- 剑指offer系列之十一:数值的整数次方
- 剑指offer(十一)之数值的整数次方
- 剑指offer之十一---数值的整数次方
- 剑指Offer之数值的整数次方
- 剑指Offer之数值的整数次方
- 剑指Offer之 - 数值的整数次方
- 【剑指offer】之数值的整数次方
- 剑指offer之数值的整数次方
- 剑指offer之数值的整数次方
- 剑指offer之面试题11:数值的整数次方
- 剑指offer之面试题11数值的整数次方
- 数值的整数次方[剑指offer]之python实现
- 剑指Offer之面试题11:数值的整数次方
- 剑指offer:数值的整数次方
- 【剑指offer】数值的整数次方
- [剑指offer]Q11:数值的整数次方
- 【剑指offer】数值的整数次方
- MySQL中join详解
- MySQL 锁机制常用知识点有哪些?
- Flex布局实现圣杯布局和网格布局
- webmagic爬取腾讯nba数据
- Scrapy学习笔记(1)初探Scrapy
- 剑指offer之十一---数值的整数次方
- Java设计模式——组合模式(Composite Pattern)
- Python-Lambda Expression
- js获取指定兄弟元素
- BZOJ刷题集
- redis学习笔记(一)
- hdu 1277 全文检索
- ES6(四: 字符串新增API)
- 区块链技术是什么?