leetcode | Pow(x, n)
2015-07-18 16:49
405 查看
Pow(x, n) : https://leetcode.com/problems/powx-n/
Implement pow(x, n).
解析:
同剑指offer: 数值的整数次方 | Power
本题考查的关键点有:
double 不能使用“==”
0 不能取负数次幂
任何数的 0 次幂为 1
1的任何次幂为1
-1的偶数次幂为1,奇数次幂为-1
如何快速的计算一个数的整数次幂
注意: 关于基数为 1 或者 -1 时 也要单拿出来,对于n很大时,能显著减少计算次数
Implement pow(x, n).
解析:
同剑指offer: 数值的整数次方 | Power
本题考查的关键点有:
double 不能使用“==”
0 不能取负数次幂
任何数的 0 次幂为 1
1的任何次幂为1
-1的偶数次幂为1,奇数次幂为-1
如何快速的计算一个数的整数次幂
注意: 关于基数为 1 或者 -1 时 也要单拿出来,对于n很大时,能显著减少计算次数
class Solution { public: double myPow(double x, int n) { if (equal(x, 0.0) && n < 0) return 0.0; if (equal(x, 0.0)) return 0.0; if (equal(x, 1.0) || n == 0) return 1.0; if (equal(x, -1.0)) return (n & 0x01) ? -1 : 1; double result = unsignedExponentPow(x, abs(n)); if (n < 0) result = 1.0 / result; return result; } private: double unsignedExponentPow(double x, int n) { if (n == 0) return 1.0; if (n == 1) return x; double result = unsignedExponentPow(x, n >> 1); result *= result; if (n & 0x01) result *= x; return result; } bool equal(double x, double y) { if (abs(x-y) < 0.00000001) return true; else return false; } };
相关文章推荐
- php使用ajax实现注册账号时判断账号是否已经存在
- Elasticsearch之servicewrapper安装
- 邮件中的抄送和密送的区别
- 基于GTID Replication主从数据不一致操作
- syslog函数及syslog配置
- py2exe打包Phython程序为exe程序
- 使用Facebook登录过后,在退出登录的时候清除access_token
- Longest Palindromic Substring
- dynamic_cast和static_cast
- android:How to delete a module in Android Studio?
- SimpleAdapter在GridView中运用实例
- MySQL DBA的基础面试题目
- 从头开始学习 Dojo,第 1 部分: 开始 Dojo 开发
- 一起talk C栗子吧(第二十回:C语言实例--括号匹配)
- Codeforces Beta Round #19 D. Points
- <转>如何在CentOS 5/6上安装EPEL 源
- Project Euler:Problem 76 Counting summations
- VC 获取任务栏窗口的句柄
- 计算机意外地重新启动或遇到错误。Windows 安装无法继续。若要安装Windows,请单击“确定”重新启动计算机,然后重新启动安装”。
- 用Maven整合SpringMVC+Spring+Hibernate 框架