LeetCode: Pow(x, n) [049]
来源:互联网 发布:网络推广薪资 编辑:程序博客网 时间:2024/05/21 21:50
【题目】
【题意】
实现pow(x, n)
【思路】
最直接的思路是用一个循环,乘n次的x。
当n的值较小的时候还好,当n非常大时,时间成本就非常高。加入n=INT_MAX, 也就是21亿多次循环,你可以试想一下。
在这种情况下,我们需要快速的乘完n个x,采用尝试贪心的方法,即滚雪球方式的翻倍相乘
注意:几种特殊情况
1. n=0;
2. n<0;
【代码】
class Solution {public: double pow(double x, int n) { if(x==0)return 0; //两种特殊情况 if(n==0)return 1; double result=1; bool isNegative= n<0?true:false; long long nTotal= isNegative? -1*n : n; long long nUsed=1; long long nUsedTotal=0; double multiply=x; while(nUsedTotal<nTotal){ nUsed=1; multiply=x; while(nUsed*2<nTotal-nUsedTotal){ nUsed*=2; multiply = multiply*multiply; } nUsedTotal+=nUsed; result*=multiply; } if(isNegative) return 1/result; return result; }};
0 0
- LeetCode: Pow(x, n) [049]
- 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】Pow(x, n)
- [LeetCode]Pow(x, n)
- [leetcode]Pow(x, n)
- LeetCode-Pow(x, n)
- LeetCode - Pow(x, n)
- LeetCode | Pow(x, n)
- Pow(x, n) -leetcode
- 【leetcode】Pow(x, n)
- 【Leetcode】Pow(x, n)
- LeetCode Pow(x, n)
- 周鸿祎内部邮件:不要盲目把360看成巨头
- C\C++代码优化的27个建议
- [LeetCode] Populating Next Right Pointers in Each Node
- 【标题+关键词+描述】网站seo三个要点
- JAVA初学基本简单的程序----适合初学者(二)
- LeetCode: Pow(x, n) [049]
- NSProgress
- Java提高篇(二七)-----TreeMap
- 关于axis2.1.6与websphere7的包冲突问题的解决方案
- 安卓异步代理服务器客户端理解
- 九度 题目1503:二叉搜索树与双向链表
- C\C++代码优化的27个建议
- jun
- JAVA编程思想学习第七篇の复用类