剑指offer-面试题16:数值的整次方
题目描述
给定一个double
类型的浮点数base
和int
类型的整数exponent
。求base
的exponent
次方。
保证
base
和exponent
不同时为0
思路分析
double
类型浮点数n
的e
次方,这里需要考虑e
是正数、负数、0
几种情况,当e
为0
时结果为1
,如果e
为负数取倒数就可以了,所以实现就很简单了,循环乘以n
再根据e
的正负来判断是否取倒数就可以了;
代码实现
public class Solution10 {public double Power(double base, int exponent) {return Math.pow(base,exponent);}public double PowerV2(double base, int exponent) {if (base == 0.0) {return 0;}if (exponent == 0) {return 1;}boolean isBaseNegative = false;if (base < 0) {base = Math.abs(base);isBaseNegative = true;}boolean isExponentNegative = false;if (exponent < 0) {isExponentNegative = true;exponent = Math.abs(exponent);}double res = 1;for (int i = 1; i <= exponent; i++) {if (isExponentNegative) {res *= 1 / base;}else{res *= base;}}return isBaseNegative ? (exponent % 2 == 0 ? res : -res) : res;}public static void main(String[] args) {Solution10 solution10 = new Solution10();System.out.println(solution10.PowerV2(2, 3));System.out.println(solution10.PowerV2(-2, 3));System.out.println(solution10.PowerV2(2, -3));System.out.println(solution10.Power(2, -3));System.out.println(solution10.Power(5.5, 2));System.out.println(solution10.Power(-5.5, 2));System.out.println(solution10.PowerV2(5.5, 2));System.out.println(solution10.PowerV2(-5.5, 2));}
}
欢迎关注南阁公众号
剑指offer-面试题16:数值的整次方相关推荐
- 剑指offer面试题16. 数值的整数次方(二分法)
题目描述 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 思路 详见链接 代码 cl ...
- 剑指offer面试题[11]-数值的正整数次方
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. (自己方法可以通过-比较low)后期补充牛客网解法,先mark一下. clas ...
- 【重点 递归版】剑指offer——面试题16:反转链表
剑指offer--面试题16:反转链表 牛客网上有<剑指offer>的题目训练https://www.nowcoder.com/activity/oj 一个有关此题图文并茂的博客:http ...
- [剑指offer]面试题16:反转链表
面试题16:反转链表 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点.链表结点定义如下: struct ListNode {int value;ListNode *nex ...
- 剑指offer面试题[16]-反转链表
题目描述 输入一个链表,反转链表后,输出链表的所有元素. 解决与链表相关的问题总是有大量的指针操作,而指针操作的代码总是容易出错的的.很多面试官喜欢出链表相关的问题,就是想通过指针操作来考查应聘者的编 ...
- 剑指offer(12)数值的整数次方
快速幂的算法太美了 对于if((b&1)==1)这是判断b是否为奇数: 例如:如果b=8(1000),即指数为8,进入循环时,b不是奇数,那么基数翻倍,现在base值为,然后b右移,此时b为4 ...
- 剑指offer——面试题54:表示数值的字符串
剑指offer--面试题54:表示数值的字符串 参考网址:https://www.nowcoder.com/profile/9717187/codeBookDetail?submissionId=15 ...
- 剑指offer——面试题11:数值的整数次方
剑指offer--面试题11:数值的整数次方 Solution1:基本算法 累乘,时间复杂度为O(n) 要考虑全部情况:指数 < 0, == 0 和 > 0. 注意在 if-else if ...
- 剑指offer 面试题三 找出数组中重复的数字
1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...
- 剑指offer面试题[64]-数据流中的中位数
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 分 ...
最新文章
- 本、硕、博的最大区别是什么?
- Shell printf 命令
- 王道计算机考研 计算机组成原理 第二章、数据的表示和运算
- mysql query结果集_如何解决PHP使用mysql_query查询超大结果集超内存问题
- 批处理命令set截取字符详解
- 2016 排行前20 的编程语言
- 部门树形结构,使用Treeview控件显示部门
- mysql用户和权限备份_备份MySQL用户和权限
- 互联网产品 从设计到运营 这中间提高须要关注的站点
- 43 FI配置-财务会计-固定资产-一般评估-定义折旧范围
- Dubbo基础知识总结
- Centos 7 设置tomcat开机自启动
- 搭建 Sql Server 2008 R2 Failover Cluster
- AD20使用之用封装创建向导创建封装
- 使用Mac系统来进行Java编程
- 京东评价系统海量数据存储设计
- android解析json数据格式,Android编程解析Json格式数据的方法
- 互联网金融VS区块链金融
- Cartopy画地图第七天(python画浮雕地图和比例尺)
- linux mtd 命令,Linux MTD介绍