LeetCode第50题思悟——Pow(x, n)(powx-n)

知识点预告

  1. 对边界值的处理意识;
  2. 对整数溢出的处理;
  3. 折半的思想

题目要求

实现 pow(x, n) ,即计算 x 的 n 次幂函数。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/powx-n
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例

输入: 2.00000, 10
输出: 1024.00000
示例 2:

输入: 2.10000, 3
输出: 9.26100
示例 3:

输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:

-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/powx-n
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我的思路

采用递归+折半的处理思路;需要注意的是,对n的统一:正负统一、奇偶统一;

public double myPow(double x, int n) {if(n==0)return 1.0;if(n<0)return 1.0/myPow(x,-n);double half = myPow(x,n>>1);if(n%2==0)return half*half;elsereturn half*half*x;
}

优秀解法

public double cal(double x, int n){if(n == 0)return 1;if(n % 2 == 1)return x * cal(x, n-1);else{double a = cal(x, n / 2);return a * a;}
}
public double myPow(double x, int n) {if(x == 0)return 0;if(n == Integer.MIN_VALUE){double temp = cal(x, Integer.MAX_VALUE);return 1.0 / (x * temp);}boolean flag = true;if(n < 0){n = -n;flag = false;}double ans = cal(x, n);if(flag == false)ans = 1.0 / ans;return ans;
}

差异分析

优秀解法对更多的边界情况做了处理,如Integer.MIN_VALUE;在不做任何配置的情况下,对Integer.MIN_VALUE测试,我的解法是会StackOverflowError的,问题就在于,对Integer.MIN_VALUE做符号处理时会溢出;但是优秀解法不会;但是,我的解法也能通过测试,说明测试用例并不是很全面;

就可靠性来说,无疑优秀解法更好一些;

知识点小结

  1. 对边界值的处理意识;
  2. 对整数溢出的处理;
  3. 折半的思想

LeetCode第50题思悟——Pow(x, n)(powx-n)相关推荐

  1. 刷题汇总(一)leetcode 精选50题 JavaScript答案总结

    题目来源 腾讯精选练习(50 题) 信息更新时间:2019-3-11,因为要准备面前端,就用js做了遍来熟悉JavaScript这门语言,50道题均已提交通过. GitHub地址:https://gi ...

  2. 刷题汇总(三)leetcode 精选50题 C++答案总结

    题目来源 腾讯精选练习(50 题) 相关: 刷题汇总(一)leetcode 精选50题 JavaScript答案总结 刷题汇总(二)剑指Offer 66题 C++答案总结 刷题汇总(四)技术类编程题汇 ...

  3. 腾讯精选练习 50 题(Leetcode)笔记 PDF下载!

    昨天在知识星球中立了一个Flag,第一步采取的行动就是把以前刷的"腾讯精选练习 50 题"重新梳理一下,就有了今天这本170多页的小册子. 这本小册子即可以作为学习数据结构与算法课 ...

  4. [Leedcode][JAVA][第50题][Pow(x, n)][快速幂][分治][转换类型]

    [问题描述][第50题][Pow(x, n)][中等] 实现 pow(x, n) ,即计算 x 的 n 次幂函数.输入: 2.10000, 3 输出: 9.26100 示例 3:输入: 2.00000 ...

  5. LeetCode刷题记录---腾讯精选练习 50 题

    腾讯精选练习 50 题,后续刷到哪更新到哪~~~加油!

  6. Leetcode重点250题

    LeetCode重点250题 这个重点题目是把LeetCode前400题进行精简.精简方法如下: 删除不常考,面试低频出现题目 删除重复代码题目(例:链表反转206题,代码在234题出现过) 删除过于 ...

  7. c语言解析sql语句_sql语句面试50题(Mysql版附解析)

    本人最近在自学sql,从开始学到自己写完本练习50题大概花了12天的时间. 学习路径:<sql基础教程>第1遍(3天)→知乎中的sql网课+leetcode刷题(4天)→牛客网刷题(2天) ...

  8. JAVA经典算法50题(转)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1]   题目:古典问题:有一对兔子, ...

  9. java经典50题_JAVA经典算法50题(3)【面试+工作】

    原标题:JAVA经典算法50题(3)[面试+工作] JAVA经典算法50题(3)[面试+工作] [程序21] 题目:求1+2!+3!+...+20!的和. 1.程序分析:此程序只是把累加变成了累乘. ...

最新文章

  1. Jakarta Commons:巧用类和组件1
  2. 【JUC并发编程10】阻塞队列
  3. Serverless 如何在阿里巴巴实现规模化落地?
  4. C++11:using 的各种作用
  5. clojure with postgres
  6. 供应商关系管理SRM为企业的节流增贡献
  7. haproxy+keepalived实现高可用K8S集群部署
  8. opsforlist 存在贼覆盖_RedisTemplate集合使用说明-opsForList(二)
  9. 绘图的尺寸_Auto CAD机械绘图尺寸标注教程10(标注多重引线)
  10. system.gc()和system.runFinalization()区别作用
  11. html将网页变成图片,保存网页为图片,教您如何将整个网页保存为图片
  12. 经典~吸引力法则:你相信什么,就会吸引什么,获得什么
  13. 项目经理一定要知道的PMP项目管理八大会议流程-(PMBOK高频考点)
  14. win7休眠 计算机管理,win7休眠设置在哪 win7休眠设置方法【图文】
  15. 第6周作业1-闰年之循环判断(网络131黄宇倩)
  16. 扎拉赞恩 服务器 微信群,魔兽8.0剧透 回归的扎拉赞恩与沃金的骨灰
  17. php从一个字符串中过滤掉英文,php过滤只保留中文,英文以及数字的方法
  18. 针对Linux系统主机,进入修复模式,解决开机报错问题
  19. 已声明“ ”,但从未读取其值。ts(6133) 原因及解决方法
  20. 微信IFTTT,用微信同步照片或信息到facebook和twitter

热门文章

  1. C/C++超级玛丽C++游戏项目详细教程
  2. Android Studio 4.0 稳定版发布了
  3. 获取今天0时0分0秒时间戳的方法
  4. .NET破解之爱奇迪(三)
  5. 用python怎样解偏微分方程组_Python能解偏微分方程吗
  6. keras 世上无难事只要肯放弃(2)
  7. 一个免费的私有代码托管
  8. 读书笔记二:《破茧成蝶》
  9. 0.3 - 非标设备常用材料
  10. 易源数据_易源接口-互联网API入口