leetcode50 Pow(x, n)
2016-03-06 03:22
267 查看
50. Pow(x, n)
Total Accepted:83619 Total Submissions:
299730 Difficulty: Medium
Implement pow(x, n).
二分法求快速幂,时间复杂度为O(logn)。
测试数据有各种负数,真是醉了
最初的AC代码:
class Solution { public: double myPow(double x, int n) { if (0 == n || 1 == x) return 1; if (-1 == x) { if (n & 1) return -1; return 1; } if (-2147483648 == n) return 0; double ret = 1; int k = abs(n); while (k) { if (k & 1) { ret *= x; } x *= x; k >>= 1; } if (n > 0) return ret; return 1 / ret; } };
改进后的AC代码:
class Solution { public: double myPow(double x, int n) { if (0 == n) return 1; if (INT_MIN == n) n += 2; //n绝对值比较大,加2避免溢出,也无伤大雅 double ret = 1; int k = abs(n); while (k) { if (k & 1) { ret *= x; } x *= x; k >>= 1; } if (n > 0) return ret; return 1 / ret; } };
相关文章推荐
- 召回率与准确率概念
- LeetCode Range Sum Query 2D - Mutable
- *栈的应用
- 栈[链栈]
- leetcode206 Reverse Linked List
- shell脚本中echo显示内容带颜色
- elasticsearch小记之--sort的type
- Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示
- unity, destroy gameObject & destroy all children
- 云管端概念
- C#: WMI 获取远程 Windows 主机信息
- opencv2.0 saturate_cast<?> 研究
- 关于两个可移动ViewGroup触摸事件冲突处理
- build、compile、rebuild all
- 碰撞检测之Sphere-Box检测
- [DX9/10.1]在现代硬件上模拟调色板贴图
- 待我长发及腰
- 小雷郑重承诺,在2017年之前,发表自己在云计算、在线招聘、电子商务、宠物经济、互联网金融、互联网旅行等至少6个行业领域的研究报告
- 小雷郑重承诺,在2017年之前,发表自己在云计算、在线招聘、电子商务、宠物经济、互联网金融、互联网旅行等至少6个行业领域的研究报告
- 小雷郑重承诺,在2017年之前,发表自己在云计算、在线招聘、电子商务、宠物经济、互联网金融、互联网旅行等至少6个行业领域的研究报告