数值的整数次方(代码的完整性)
来源:互联网 发布:js 遍历页面所有元素 编辑:程序博客网 时间:2024/06/16 03:01
题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路一:简单快速幂法
public class Solution { public double Power(double base, int exponent) { int n = 0; double res = 1; double current = base; if (exponent > 0) { n = exponent; } else if (exponent < 0) { if (base == 0) throw new RuntimeException("分母不为0"); n = -exponent; } else { if (base == 0) return 1; n = 0; } while (n != 0) { if ((n & 1) == 1) res = res * current; current = current * current; n = n >> 1; } return exponent >= 0 ? res : 1/res; }}
n为偶数,a^n = a^n/2 * a^n/2;
n为奇数,a^n=(a^(n-1)/2)*(a^(n-1/2))* a
时间复杂度O(logn)
public class Solution { public double Power(double base, int exponent) { int n = Math.abs(exponent); if (n == 0) return 1; if (n == 1) return base; double res = Power(base, (n >> 1)); res *= res; if ((n & 1) == 1) res *= base; return exponent > 0 ? res : 1/res; }}
思路三:传统解法
传统公式求解时间复杂度O(n)
public class Solution { public double Power(double base, int exponent) { if (base == 0 && exponent == 0) return 1; double res = 1; for (int i = 0; i < Math.abs(exponent); i++) { res *= base; } return exponent > 0 ? res : 1/res; }}
思路四:利用Math类的pow方法
public class Solution { public double Power(double base, int exponent) { if (base == 0.0 && exponent == 0) return 1.0; return Math.pow(base, exponent); }}
阅读全文
0 0
- 数值的整数次方(代码的完整性)
- 代码的完整性-面试题11-数值的整数次方
- 剑指offer:(11)代码的完整性: 数值的整数次方
- 《剑指offer》刷题笔记(代码完整性):数值的整数次方
- 【编程题目】Pq.6--数值的整数次方(关于代码完整性及错误处理方式的探讨)
- 剑指offer 3.3 代码的完整性1- 求数值的整数次方
- 【剑指offer】3.3代码的完整性——面试题11:数值的整数次方
- 剑指offer 11题 【代码的完整性】数值的整数次方
- 数值的整数次方代码实现
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 价值 10 亿美元!Cruise Automation 将挑战谷歌无人驾驶汽车
- 关于NFC和公交一卡通,你需要知道这些
- 我国将公布首个无人驾驶技术标准,特斯拉车祸再生 | 智驾周刊
- HTML 将导航页嵌套到<iframe>中
- JavaScript知识夯实系列-3.变量与数据类型
- 数值的整数次方(代码的完整性)
- JVM 之 逃逸分析和TLAB
- java ThreadLocal详解
- javascript事件简述和入门案例,js事件驱动机制;js 点击事件;js 焦点事件表单提交事件,键位弹起事件鼠标移入移除事件,
- [DP] Atcoder AGC013D. Piling Up
- 腾讯应用宝合作伙伴沙龙在京举办 分享精准高效分发
- HotSpot的G1收集器
- 一些问题
- 一步一步学java 1.2.1Java关键字