剑指Offer面试题11 & Leetcode50
2017-05-08 15:22
369 查看
剑指Offer面试题11 & Leetcode50
Pow(x, n) 数值的整数次方Implement pow(x, n).
解题思路
考虑:这个题的难点在于处理各种极端输入,例如指数为0,指数为负等,需要考虑全面。在实现乘方的过程中,使用递推关系式减小乘法次数,缩短运行时间。
递推公式为:n为偶数时,a的n次方等于a的n/2次方乘a的n/2次方。n为奇数时,a的n次方等于a的n/2次方乘a的n/2次方乘a。
Solution
public double myPow(double x, int n) { if(x == 0.0 && n == 0) return 0.0; if(x == 1.0) return 1.0; boolean isPositive = true; if(n < 0){ isPositive = false; n = -n; System.out.println(n); } if(n == Integer.MIN_VALUE){ double result = 1.0/(powerWithUnsigned(x,Integer.MAX_VALUE) * x); return result; } double result = powerWithUnsigned(x,n); if(!isPositive){ result = 1.0/result; } return result; } double powerWithUnsigned(double x, int n){ if(n == 0){ return 1; } if(n == 1){ return x; } double result = powerWithUnsigned(x,n>>1); result *= result; if((n & 1) == 1){ result *= x; } return result; }
相关文章推荐
- 剑指Offer面试题6 & Leetcode105
- 剑指Offer面试题17 & Leetcode21
- 剑指Offer面试题16 & Leetcode206
- 剑指Offer 面试题11:数的整数次方(Leetcode50. Pow(x, n))【C库函数pow模拟】题解
- [剑指offer][面试题50]树中两个节点的最低公共祖先
- 剑指offer 面试题11 数值的整数次方
- 剑指offer--面试题11
- 【剑指offer】3.3代码的完整性——面试题11:数值的整数次方
- 剑指offer_面试题11 数值的整数次方_考察代码的完整性
- 剑指offer面试题11
- 剑指offer面试题6 前序遍历&中序遍历,后序遍历&中序遍历重构二叉树
- 【剑指Offer学习】【面试题50:树中两个结点的最低公共祖先】
- 剑指offer--面试题11:数值的整数次方--Java实现
- 剑指offer 面试题11
- 剑指offer-->面试题7 用两个栈实现队列
- 剑指Offer面试题11(Java版):数值的整数次方
- 【剑指Offer】鸟瞰50题之11 - 20题
- 剑指offer-->面试题6 重建二叉树
- 剑指Offer:面试题50 树中两个节点的最低公共祖先
- 剑指Offer面试题:11.打印1到最大的n位数