剑指offer题解C++【12】数值的整数次幂
来源:互联网 发布:excel数据监控软件 编辑:程序博客网 时间:2024/06/05 11:02
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解题思路
库函数中有幂函数pow(x,y),如果你直接return pow(base,exponent);也能通过测试用例,但估计offer无缘了。
为了降低时间复杂度,使用迭代:
- 如果n为偶数,a^n=a^(n/2)*a(n/2);
- 如果n为奇数,a^n=a^(n/2)*a(n/2)*a;
- n/2可以用右移1位得到;
此外,本题还要考虑以下几点:
- exponent=0时,结果为1;
- base趋近于0时,结果为0;
- base趋近于1时,结果为1;
- base趋近于-1时,指数为奇数时结果为-1,指数为偶数时结果为1;
- exponent<0时,结果为(1/base)^(-exponent);
代码
class Solution {public: double Power(double base, int exponent) { if (exponent == 0) return 1.0; if (fabs(base) < 1e-5) return 0.0; if (fabs(base - 1) < 1e-5) return 1; if (fabs(base + 1) < 1e-5) return exponent % 2 ? -1 : 1; if (exponent < 0){ base = 1.0 / base; exponent = -exponent; } double res = 1.0; while (exponent){ if (exponent % 2){ res *= base; } base *= base; exponent >>= 1; } return res; }};
阅读全文
0 0
- 剑指offer题解C++【12】数值的整数次幂
- 剑指offer题解 数值的整数次方
- 《剑指offer》牛客网java题解-数值的整数次方
- 剑指offer 12 数值的整数次方
- 数值的整数次幂
- 数值的整数次幂
- 剑指offer 数值的整数次幂,求base的exponent次方,不能使用库函数,同时不需要考虑大数问题
- 计算数值的整数次幂
- 剑指offer(12):数值的整数次方
- 剑指Offer(12)______数值的整数次方
- 剑指Offer——(12)数值的整数次方
- 【剑指offer-解题系列(12)】数值的整数次方
- 剑指offer(12)—数值的整数次方
- 剑指offer第12题(数值的整数次方)
- 牛客网-剑指offer-12-数值的整数次方
- 数值的整数次方(剑指Offer 第 12 题)
- 剑指Offer之数值的整数次方
- 剑指offer:数值的整数次方
- 二维码之zxing仿新浪微博二维码
- caffe的python layer
- C的多态
- c++类和对象二
- Android-贪吃蛇(三)- Mainactivity
- 剑指offer题解C++【12】数值的整数次幂
- Java读取Unicode文件(UTF-8等)时碰到的BOM首字符问题,及处理方法
- react-native time定时器 防止内存泄露的注意点
- java的CSV读写
- 6147问题
- 插入USB设备,无法在windows下ubuntu中找到设备节点的问题解决
- android 效果网址
- 代码适用性-低耦合案例
- 写hql时,路径中有"\"时,要将它换成"\\",才能在数据库中显示"\"