剑指offer——16.数值的整数次方
题目:
实现求base的exponent次方
知识点:
- 判断奇数还是偶数,a&1==1;
- 某数除以二,a >>= 1;
- a>0? res=1:res=2,当满足条件时,选前者否则后者
注意:
- 尽量考虑多种情况
-代码规范:清晰书写、清晰布局、合理命名
代码完整性:功能测试、边界测试、负面测试
代码实现:
- 常规方法(全面但不太高效):
- 新思路(利用半半思想):分奇数偶数去讨论,奇数先给它赋值一次将其转化成偶数
//方法一
/*绝对值的pow*/
double powerWithAbsExponent(double base, unsigned int absExponent)
{double result = 1.0;for (int i = 0; i < absExponent; ++i){result *= base;}return result;
}
/*总power*/
double Power(double base, int exponent) {//定义一个输入是否有效的全局变量bool isInvalidInput = false;if (base == 0 && exponent < 0){isInvalidInput = true;return 0.0;}//转换exponent为绝对值if (exponent < 0){unsigned int absExponent = (unsigned int)(-exponent);double result = powerWithAbsExponent(base, absExponent);return 1 / result;}unsigned int absExponent = (unsigned int)(exponent);double result = powerWithAbsExponent(base, absExponent);return result;
}//方法二
double power(double base, int exponent)
{double res = 1, cur = base;int absExponent;//特殊情况if (base == 0 && exponent < 0){throw "Error!";}//根据指数分情况if (exponent == 0)return res;else if (exponent < 0)absExponent = -exponent;elseabsExponent = exponent;//讨论如何计算while (absExponent != 0){//若为奇数,先给它乘个自己if ((absExponent & 1) == 1)res *= cur;cur *= cur; //加倍absExponent >>= 1; //除2}if (exponent < 0)return 1 / res;return res;
}
int main()
{double res = power(2, -3);cout <<res << endl;getchar();return 0;
}
剑指offer——16.数值的整数次方相关推荐
- 【LeetCode】剑指 Offer 16. 数值的整数次方
[LeetCode]剑指 Offer 16. 数值的整数次方 文章目录 [LeetCode]剑指 Offer 16. 数值的整数次方 package offer;public class Soluti ...
- 【附可运行代码】剑指 Offer 16. 数值的整数次方
立志用最少的代码做最高效的表达 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn).不得使用库函数,同时不需要考虑大数问题. 示例 1: 输入:x = 2.00000, n = 10 ...
- 剑指 Offer 16. 数值的整数次方
思路:快速幂模板,主要要注意负数的范围,乘以负一的时候会溢出,所以开一下longlong class Solution { public:double myPow(double x, int n) { ...
- 【LeetCode笔记】剑指 Offer 16. 数值的整数次方(Java、分治)
文章目录 题目描述 思路 && 代码 二刷 题目描述 很棒的题目!便于分治思想的理解! 思路 && 代码 分情况是大头- 递归结束的情况: x0x^0x0 = 1 x1 ...
- 【leetcode】剑指 Offer 16. 数值的整数次方(shu-zhi-de-zheng-shu-ci-fang-lcof)(快速幂)[中等]
链接 https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/ 耗时 解题:6 min 题解:6 min 题意 实现 po ...
- Leetcode50.Pow(x, n)剑指 Offer 16. 数值的整数次方--递归快速幂
class Solution {public:double myPow(double x, int n) {if(n==0) return 1;//考虑到负数右移永远是负数,if(n==-1) ret ...
- 剑指Offer #12 数值的整数次方(快速幂)
题目来源:牛客网-剑指Offer专题 题目地址:数值的整数次方 题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和 ...
- 《剑指offer》数值的整数次方
题目:给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 分析:熟悉java中Math的话,直接调用即可,深刻说明在常规编程中熟悉java核 ...
- 《剑指Offer》 数值的整数次方
题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 直接调用pow函数 代码: class Solution { pub ...
最新文章
- ADMT3.2域迁移之Server2003至Server2012系列(八)生成密钥文件及安装密码迁移工具...
- 【Android View绘制之旅】Draw过程
- boost::system::error_category相关的测试程序
- Tempter of the Bone(HDU1010)
- python3异常_python3 异常处理
- 需求蔓延,常见但不正常,教你如何破
- 30 岁后,哪些职业瓶颈阻碍了你的成长?
- qt可以导入3d吗_3D全息投影技术可以用在教育行业吗?
- 在WPF中开启摄像头扫描二维码(Media+Zxing)
- Linux 安装JDK详细步骤
- 便携式CAN分析仪、CAN接口卡、USBCAN 如何安装驱动?
- 简易计算机绘图,cad绘图简易入门教程_CAD教程
- 迅雷iOS端安装 - iPhone安装手机迅雷
- [日更-2019.4.20、21] cm-14.1 Android系统启动过程分析(二)-Zygote进程启动过程
- 编程差的程序员,90%都是吃了数学的亏!骨灰级开发:方法不对,努力也白费...
- 中e管家理财小方法让闲钱变成活钱
- 大数据——DBT:数据治理、血缘关系DBT的安装及测试(基础使用篇)
- 垃圾小白羊leetcode刷题记录1
- 建筑CAD基础设计【3】
- Java爬爬之网页去重和代理ip
热门文章
- hadoop错误:Does not contain a valid host:port authority
- linux 修改普通用户的 max user process
- 构建和实现单点登录解决方案
- 【SPOJ5971】LCMSUM
- 衔接UI线程和管理后台工作线程的类(多线程、异步调用)[转]
- PJblog跨站漏洞利用及修补
- 【JavaFx】eclipse搭建JavaFx开发环境
- 【jQuery笔记Part2】05-jQuery自定义动画
- 网络渗透测试(2)——使用nmap扫描微信服务器
- 软件工程专插本_2021年广东专插本8所学校招生专业(拟),华师停招专插本?...