LeetCode算法题之Pow(x, n)
来源:互联网 发布:淘宝网站首页 编辑:程序博客网 时间:2024/06/08 17:00
问题描述:
Implement pow(x, n).自己写函数实现乘方运算
解题思路:
直接实现肯定超时,并且要考虑指数为0,指数为1,指数为负,底数为0的特殊情况,此题用递归方法实现,
以下代码来自《剑指offer》,此代码写的太赞了,如果想详细了解解题思路请买书!!刚看完所以直接贴上去运行了,必然轻松A过,向大神致敬!!!
bool g_InvalidInput = false;bool equal(double num1, double num2);double PowerWithUnsignedExponent(double base, unsigned int exponent);class Solution{public: double pow(double base, int exponent) { g_InvalidInput = false; if(equal(base, 0.0) && exponent < 0)//默认一定范围外的数约等于0 { g_InvalidInput = true; return 0.0; } unsigned int absExponent = (unsigned int)(exponent); if(exponent < 0)//指数小于0 absExponent = (unsigned int)(-exponent); double result = PowerWithUnsignedExponent(base, absExponent);//递归实现 if(exponent < 0) result = 1.0 / result; return result; } double PowerWithUnsignedExponent(double base, unsigned int exponent) { if(exponent == 0) return 1; if(exponent == 1) return base; double result = PowerWithUnsignedExponent(base, exponent >> 1);//此处exponent做的是移位运算,比直接除2快的多,大神!!! result *= result; if((exponent & 0x1) == 1) result *= base; return result; } bool equal(double num1, double num2) { if((num1 - num2 > -0.0000001) && (num1 - num2 < 0.0000001)) return true; else return false; }};
0 0
- LeetCode算法题之Pow(x, n)
- 【Leetcode】算法题50 Pow(x,n)
- leetcode之Pow(x, n)
- LeetCode 之 Pow(x, n)
- LeetCode之Pow(x, n)
- leetcode之Pow(x, n)
- leetcode 之 Pow(x, n)
- LeetCode之Pow(x, n)
- leetcode之Pow(x, n)
- LeetCode OJ算法题(四十九):Pow(x, n)
- LeetCode算法题目:Pow(x, n)
- leetcode 刷题之路 36 Pow(x, n)
- leetcode之路050 Pow(x, n)
- LeetCode第50.之Pow(x, n)
- LeetCode: Pow(x, n)
- LeetCode Pow(x,n)
- [Leetcode] Pow(x, n)
- LeetCode: Pow(x, n)
- lua环境搭建
- Lucas定理
- XPath总结1
- 题目1092 Fibonacci 九度Online Judge
- BZOJ 2654 tree 二分+最小生成树
- LeetCode算法题之Pow(x, n)
- C语言Sleep clock time函数的使用
- libevent-2.0.22-stable Fedora安装方法
- 008:了不起的分支和循环2
- Fusion 360 以及 API 快速了解
- 欢迎使用CSDN-markdown编辑器
- selenium学习笔记(1)--webdriver中时间控件的使用
- Python图论算法(二)——prim算法
- 工作累了,不妨停下来读读这篇文章