LeetCode第50题思悟——Pow(x, n)(powx-n)
LeetCode第50题思悟——Pow(x, n)(powx-n)
知识点预告
- 对边界值的处理意识;
- 对整数溢出的处理;
- 折半的思想
题目要求
实现 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做符号处理时会溢出;但是优秀解法不会;但是,我的解法也能通过测试,说明测试用例并不是很全面;
就可靠性来说,无疑优秀解法更好一些;
知识点小结
- 对边界值的处理意识;
- 对整数溢出的处理;
- 折半的思想
LeetCode第50题思悟——Pow(x, n)(powx-n)相关推荐
- 刷题汇总(一)leetcode 精选50题 JavaScript答案总结
题目来源 腾讯精选练习(50 题) 信息更新时间:2019-3-11,因为要准备面前端,就用js做了遍来熟悉JavaScript这门语言,50道题均已提交通过. GitHub地址:https://gi ...
- 刷题汇总(三)leetcode 精选50题 C++答案总结
题目来源 腾讯精选练习(50 题) 相关: 刷题汇总(一)leetcode 精选50题 JavaScript答案总结 刷题汇总(二)剑指Offer 66题 C++答案总结 刷题汇总(四)技术类编程题汇 ...
- 腾讯精选练习 50 题(Leetcode)笔记 PDF下载!
昨天在知识星球中立了一个Flag,第一步采取的行动就是把以前刷的"腾讯精选练习 50 题"重新梳理一下,就有了今天这本170多页的小册子. 这本小册子即可以作为学习数据结构与算法课 ...
- [Leedcode][JAVA][第50题][Pow(x, n)][快速幂][分治][转换类型]
[问题描述][第50题][Pow(x, n)][中等] 实现 pow(x, n) ,即计算 x 的 n 次幂函数.输入: 2.10000, 3 输出: 9.26100 示例 3:输入: 2.00000 ...
- LeetCode刷题记录---腾讯精选练习 50 题
腾讯精选练习 50 题,后续刷到哪更新到哪~~~加油!
- Leetcode重点250题
LeetCode重点250题 这个重点题目是把LeetCode前400题进行精简.精简方法如下: 删除不常考,面试低频出现题目 删除重复代码题目(例:链表反转206题,代码在234题出现过) 删除过于 ...
- c语言解析sql语句_sql语句面试50题(Mysql版附解析)
本人最近在自学sql,从开始学到自己写完本练习50题大概花了12天的时间. 学习路径:<sql基础教程>第1遍(3天)→知乎中的sql网课+leetcode刷题(4天)→牛客网刷题(2天) ...
- JAVA经典算法50题(转)
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1] 题目:古典问题:有一对兔子, ...
- java经典50题_JAVA经典算法50题(3)【面试+工作】
原标题:JAVA经典算法50题(3)[面试+工作] JAVA经典算法50题(3)[面试+工作] [程序21] 题目:求1+2!+3!+...+20!的和. 1.程序分析:此程序只是把累加变成了累乘. ...
最新文章
- Jakarta Commons:巧用类和组件1
- 【JUC并发编程10】阻塞队列
- Serverless 如何在阿里巴巴实现规模化落地?
- C++11:using 的各种作用
- clojure with postgres
- 供应商关系管理SRM为企业的节流增贡献
- haproxy+keepalived实现高可用K8S集群部署
- opsforlist 存在贼覆盖_RedisTemplate集合使用说明-opsForList(二)
- 绘图的尺寸_Auto CAD机械绘图尺寸标注教程10(标注多重引线)
- system.gc()和system.runFinalization()区别作用
- html将网页变成图片,保存网页为图片,教您如何将整个网页保存为图片
- 经典~吸引力法则:你相信什么,就会吸引什么,获得什么
- 项目经理一定要知道的PMP项目管理八大会议流程-(PMBOK高频考点)
- win7休眠 计算机管理,win7休眠设置在哪 win7休眠设置方法【图文】
- 第6周作业1-闰年之循环判断(网络131黄宇倩)
- 扎拉赞恩 服务器 微信群,魔兽8.0剧透 回归的扎拉赞恩与沃金的骨灰
- php从一个字符串中过滤掉英文,php过滤只保留中文,英文以及数字的方法
- 针对Linux系统主机,进入修复模式,解决开机报错问题
- 已声明“ ”,但从未读取其值。ts(6133) 原因及解决方法
- 微信IFTTT,用微信同步照片或信息到facebook和twitter