题目:就是实现一个指数函数。

直接用一个while一直乘以n词肯定是会超时的。

自己写了用递归(而且是很挫的递归),测试了无数次,根据每个case去修改代码。终于可以AC了。不忍直视,自己写了好长,如下:

  1. class Solution {
  2. public:
  3. double pow(double x, int n) {
  4. int flag1 = , flag2 = ;
  5. if (n < )
  6. {
  7. flag1 = ;
  8. if (n > INT_MIN) n = -n;
  9. else
  10. {flag2 = ; n = -(n + );}
  11. }
  12. if (n == || x == )
  13. return ;
  14. if (x == )
  15. return ;
  16. int time = (int) (log(n)/log());
  17. double ans = x;
  18. int cnt = ;
  19. while(time--)
  20. {
  21. cnt <<= ;
  22. ans *= ans;
  23. }
  24. if(!flag2)
  25. {
  26. if (cnt == n)
  27. {
  28. if(flag1)
  29. return /ans;
  30. return ans;
  31. }
  32. else
  33. {
  34. if (flag1)
  35. return /(ans*pow(x, n - cnt));
  36. return ans*pow(x, n - cnt);
  37. }
  38. }
  39. else
  40. {
  41. if (cnt == n)
  42. {
  43. if (flag1)
  44. return /(ans*x);
  45. return ans*x;
  46. }
  47. else
  48. {
  49. if (flag1)
  50. return /(x*ans*pow(x, n-cnt));
  51. return x*ans*pow(x, n - cnt);
  52. }
  53. }
  54. }
  55. };

然后肯定要看看其他大神。用递归的,别人十几行就搞定了。

  1. double pow(double x, int n) {
  2. if (n == ) return 1.0;
  3. double half = pow(x, n/);
  4. if (n% == )
  5. {
  6. return half*half;
  7. }
  8. else if (n>)
  9. {
  10. return half*half*x;
  11. }
  12. else
  13. {
  14. return half/x*half;
  15. }
  16. }

以下有一个没有用递归的。

  1. public double pow(double x, int n) {
  2. if(n==)
  3. return 1.0;
  4. double res = 1.0;
  5. if(n<)
  6. {
  7. if(x>=1.0/Double.MAX_VALUE||x<=1.0/-Double.MAX_VALUE)
  8. x = 1.0/x;
  9. else
  10. return Double.MAX_VALUE;
  11. if(n==Integer.MIN_VALUE)
  12. {
  13. res *= x;
  14. n++;
  15. }
  16. }
  17. n = Math.abs(n);
  18. boolean isNeg = false;
  19. if(n%== && x<)
  20. {
  21. isNeg = true;
  22. }
  23. x = Math.abs(x);
  24. while(n>)
  25. {
  26. if((n&) == )
  27. {
  28. if(res>Double.MAX_VALUE/x)
  29. return Double.MAX_VALUE;
  30. res *= x;
  31. }
  32. x *= x;
  33. n = n>>;
  34. }
  35. return isNeg?-res:res;
  36. }

leetcod Pow(x, n)的更多相关文章

  1. 【探索】无形验证码 —— PoW 算力验证

    先来思考一个问题:如何写一个能消耗对方时间的程序? 消耗时间还不简单,休眠一下就可以了: Sleep(1000) 这确实消耗了时间,但并没有消耗 CPU.如果对方开了变速齿轮,这瞬间就能完成. 不过要 ...

  2. [LeetCode] Super Pow 超级次方

    Your task is to calculate ab mod 1337 where a is a positive integer and b is an extremely large posi ...

  3. [LeetCode] Pow(x, n) 求x的n次方

    Implement pow(x, n). 这道题让我们求x的n次方,如果我们只是简单的用个for循环让x乘以自己n次的话,未免也把LeetCode上的想的太简单了,一句话形容图样图森破啊.OJ因超时无 ...

  4. Javascript四舍五入(Math.round()与Math.pow())

    代码 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ ...

  5. Pow(x, n)

    Implement pow(x, n). public class Solution { public double pow(double x, int n) { //判断x是不是0 if(Math. ...

  6. leetcode pow(x,n)实现

    题目描述: 自己实现pow(double x, int n)方法 实现思路: 考虑位运算.考虑n的二进制表示形式,以n=51(110011)为例,x^51 = x^1*x^2*x^16*x^32,因此 ...

  7. C语言pow函数编写

    C语言pow函数编写 #include<stdio.h> double chaoba(double f,double q); //声明自定义函数 void main(void) { dou ...

  8. C语言中关于POW在不同状态下四舍五入的解决方法

    这是今天作业中的一个代码: #include <stdio.h>#include<math.h>int main(){ printf("请输入一个整数:") ...

  9. Pow 算法

    #include <iostream> using namespace std; template<class T, class Int> T Pow(T x, Int n) ...

随机推荐

  1. IOS 数据库管理系统(SQLite)

    嵌入式数据库 SQLite嵌入式数据库的优势 1.支持事件,你并不需要配置,无需安装,不需要管理员 2.支持部分脂肪SQL92 3.完整的数据库被存储在磁盘上的文件的顶部,相同的数据库文件可以在不同机 ...

  2. 根据自己的需要,把别人开发好的东西搬过来,优化and重构,在优化的过程中,甚至也会弄出一套全新的东西(转)

    赵海平在今年三月份来到阿里,听毕玄(他现任主管)说去年五六月份就跟赵海平聊上了.有人问:为啥 BAT 三大巨头,你看中了阿里巴巴?在今天现场达一千多人的分享中赵海平给出了回复:“因为百度和腾讯没找我呗 ...

  3. php用魔术方法__call实现类函数重载

    因为php是弱类型语言,不喜欢c++通过改变函数返回相同的值键入的参数的数目和功能将过载!但在需求函数的实际发展可能过载.开发需求,我们能够通过魔术方法__call()来实现函数重载. class T ...

  4. 于ubuntu-kylin14.10下一个,无法使用apt-get具( libc6-i386 : 赖: libc6 (= 2.15-0ubuntu10.5) 但 2.19-0ubuntu6 一个已)

    这篇文章有xhz1234(徐洪志)书写.转载请注明出处. http://blog.csdn.net/xhz1234/article/details/37044531 作者:徐洪志 背景:安装wine. ...

  5. 批处理命令行CMD启动停止重启IIS的命令

    原文:批处理命令行CMD启动停止重启IIS的命令 启动IIS: net start iisadmin    (IIS的整个服务) net start w3svc       (WWW网页WEB服务) ...

  6. Oracle EBS WMS特征(一)

    Oracle EBS WMS特征(一) (版权声明.我的原创或翻译的文章,如需转载,转载用于个人学习,转载请注明出处:否则,请与我联系,版权所有) Oracle WMS这是一个仓库管理,它是Oracl ...

  7. HR系统邮件审批功能总结

    时至今日,来兰亭工作的第三个小任务算是暂时告一段落了.这个小任务是耗费时间最长的,因此在这里总结整理一下. 首先这个功能的出发点是方法领导进行手下员工的审批,包括加班申请,休假申请,和漏打卡申请.由于 ...

  8. thinkphp学习笔记4—眼花缭乱的配置

    原文:thinkphp学习笔记4-眼花缭乱的配置 1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展 ...

  9. ubuntu 14.04 hadoop eclipse 0配置基本环境

    动人的hadoop第二天.构造hadoop该环境还花了两天时间,在这里写自己配置的过程,我希望能帮助! 我将文中用到的全部资源都分享到了  这里,点开就能下载,不须要一个个的找啦! 当中有<Ha ...

  10. HBase加Solr

    HBase加Solr 如何解决分布式系统数据事务一致性问题 (HBase加Solr) 摘要:对于所有的分布式系统,我想事务一致性问题是极其非常重要的问题,因为它直接影响到系统的可用性.本文以下所述所要 ...