LeetCode(50) Pow(x, n)
2015-07-24 15:36
423 查看
处理数值计算问题的两种方法:1、基于分治法的二进制分解的方法;2、基于减二法的二分法。参考Code Ganker。
基于分治法的二进制分解的方法
基于减二法的二分法
基于分治法的二进制分解的方法
[code]class Solution { public: double myPow(double x, int n) { bool isNegative = false; if(n % 2 == 1 && x < 0) isNegative = true; x = abs(x); if(n < 0) { x = 1 / x; n = -n; } double result = 1.0; while(n > 0) { if(1 == (n & 1)) result *= x; x *= x; n = n >> 1; } return isNegative == false ? result : -result; } };
基于减二法的二分法
[code]class Solution { public: double minusTwo(double x, int n) { if(n == 1) return x; double result = minusTwo(x, n / 2); if(1 == n % 2) { result = result * result * x; }else { result = result * result; } return result; } double myPow(double x, int n) { if(0 == n) return 1.0; bool isNegative = false; if(n % 2 == 1 && x < 0) isNegative = true; x = abs(x); if(n < 0) { x = 1 / x; if(-2147483648 == n) n = 2147483647; else n = -n; } return true == isNegative ? -minusTwo(x, n) : minusTwo(x, n); } };
相关文章推荐
- beego路由实现原理
- 为什么Unix只允许对非目录文件实行勾链?
- UVa 11806 Cheerleaders 拉拉队
- 用VS 2015写C++代码:体验一下变参模板、完美转发和lambda
- http://bbs.ednchina.com/BLOG_345002072_2001308.HTM
- 计算机时间复杂度和空间复杂度
- SGU 239.Minesweeper
- K - Rochambeau - poj2912(类似食物链)
- Android开发学习笔记之Activity属性设置
- 小白学Python(二) 基本文件操作
- android的屏幕保持常亮
- .NET简谈——跨进高级编程门槛的必经之路
- MVC权限控制
- Activity的生命周期笔记
- Windows Server 2012 DHCP安装及高可用
- 期望和方差
- EventBus组件间通讯利器【入门篇】
- ERROR: JAVA_HOME is set to an invalid directory
- Multisim BLUE14.0使用介绍
- Hibernate 增删改查