[leetcode]50. Pow(x, n)@Java解题报告
2017-07-30 11:04
429 查看
https://leetcode.com/problems/powx-n/description/
Implement pow(x, n).
比较简单的题,分而治之思想
package go.jacob.day730;
import org.junit.Test;
public class Demo3 {
@Test
public void testName() throws Exception {
System.out.println(myPow_byme(34.00515, -3));
}
public double myPow(double x, int n) {
if (x == 0)
return 0;
if (n < 0)
return 1 / power(x, -n);
else
return power(x, n);
}
private double power(double x, int n) {
if (n == 0)
return 1;
double half = power(x, n / 2);
if (n % 2 == 0)
return half * half;
else
return half * half * x;
}
/*
* 我的解法:287/300 passed .超时
*/
public double myPow_byme(double x, int n) {
if (x == 0)
return 0;
if (n == 0)
return 1;
boolean flag = false;
if (n < 0)
flag = true;
double res = solve_1(x, Math.abs(n));
return flag ? 1 / res : res;
}
private double solve_1(double x, int n) {
if (n == 0)
return 1;
double product = x;
int index = 1;
while (index + index <= n) {
product *= product;
index += index;
}
return product * solve_1(x, n - index);
}
}
Implement pow(x, n).
比较简单的题,分而治之思想
package go.jacob.day730;
import org.junit.Test;
public class Demo3 {
@Test
public void testName() throws Exception {
System.out.println(myPow_byme(34.00515, -3));
}
public double myPow(double x, int n) {
if (x == 0)
return 0;
if (n < 0)
return 1 / power(x, -n);
else
return power(x, n);
}
private double power(double x, int n) {
if (n == 0)
return 1;
double half = power(x, n / 2);
if (n % 2 == 0)
return half * half;
else
return half * half * x;
}
/*
* 我的解法:287/300 passed .超时
*/
public double myPow_byme(double x, int n) {
if (x == 0)
return 0;
if (n == 0)
return 1;
boolean flag = false;
if (n < 0)
flag = true;
double res = solve_1(x, Math.abs(n));
return flag ? 1 / res : res;
}
private double solve_1(double x, int n) {
if (n == 0)
return 1;
double product = x;
int index = 1;
while (index + index <= n) {
product *= product;
index += index;
}
return product * solve_1(x, n - index);
}
}
相关文章推荐
- [leetcode]145. Binary Tree Postorder Traversal@Java解题报告
- [leetcode]114. Flatten Binary Tree to Linked List@Java解题报告
- [leetcode]76. Minimum Window Substring@Java解题报告
- 【LeetCode】Hamming Distance 解题报告(java & python)
- 【LeetCode】Group Anagrams 解题报告(Python & Java)
- [leetcode]136. Single Number@Java解题报告
- LeetCode Plus One Java版解题报告
- [leetcode]141. Linked List Cycle@Java解题报告
- 【LeetCode】Two Sum 解题报告(java & python)
- [leetcode]133. Clone Graph@Java解题报告
- [leetcode]46. Permutations@Java解题报告
- [leetcode]107. Binary Tree Level Order Traversal II@Java解题报告
- 【LeetCode】Single Number 解题报告(Java & Python)
- [leetcode]47. Permutations II@Java解题报告
- 【LeetCode】Validate Binary Search Tree 解题报告(Java & Python)
- [leetcode]103. Binary Tree Zigzag Level Order Traversal@Java解题报告
- [leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal@Java解题报告
- [leetcode]142. Linked List Cycle II@Java解题报告
- [leetcode]110. Balanced Binary Tree@Java解题报告
- 【LeetCode】Binary Tree Paths 解题报告(java & python)