File tree Expand file tree Collapse file tree 3 files changed +70
-0
lines changed
src/com/blankj/medium/_050 Expand file tree Collapse file tree 3 files changed +70
-0
lines changed Original file line number Diff line number Diff line change 6666| 33| [ Search in Rotated Sorted Array] [ 033 ] | Arrays, Binary Search|
6767| 43| [ Multiply Strings] [ 043 ] | Math, String|
6868| 49| [ Group Anagrams] [ 049 ] | Hash Table, String|
69+ | 50| [ Pow(x, n)] [ 050 ] | Math, Binary Search|
6970| 554| [ Brick Wall] [ 554 ] | Hash Table|
7071
7172
129130[ 033 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/033/README.md
130131[ 043 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/043/README.md
131132[ 049 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/049/README.md
133+ [ 050 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/050/README.md
132134[ 554 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/554/README.md
133135
134136[ 004 ] : https://github.com/Blankj/awesome-java-leetcode/blob/master/note/004/README.md
Original file line number Diff line number Diff line change 1+ # [ Pow(x, n)] [ title ]
2+
3+ ## Description
4+
5+ Implement pow(x, n).
6+
7+ ** Tags:** Math, Binary Search
8+
9+
10+ ## 思路0
11+
12+ 题意是让你计算` x^n ` ,如果直接计算肯定会超时,那么我们可以想到可以使用二分法来降低时间复杂度。
13+
14+ ``` java
15+ class Solution {
16+ public double myPow (double x , int n ) {
17+ if (n < 0 ) return helper(1 / x, - n);
18+ return helper(x, n);
19+ }
20+
21+ private double helper (double x , int n ) {
22+ if (n == 0 ) return 1 ;
23+ if (n == 1 ) return x;
24+ double d = helper(x, n >>> 1 );
25+ if (n % 2 == 0 ) return d * d;
26+ return d * d * x;
27+ }
28+ }
29+ ```
30+
31+
32+ ## 结语
33+
34+ 如果你同我一样热爱数据结构、算法、LeetCode,可以关注我GitHub上的LeetCode题解:[ awesome-java-leetcode] [ ajl ]
35+
36+
37+
38+ [ title ] : https://leetcode.com/problems/powx-n
39+ [ ajl ] : https://github.com/Blankj/awesome-java-leetcode
Original file line number Diff line number Diff line change 1+ package com .blankj .medium ._050 ;
2+
3+ /**
4+ * <pre>
5+ * author: Blankj
6+ * blog : http://blankj.com
7+ * time : 2017/10/18
8+ * desc :
9+ * </pre>
10+ */
11+ public class Solution {
12+ public double myPow (double x , int n ) {
13+ if (n < 0 ) return helper (1 / x , -n );
14+ return helper (x , n );
15+ }
16+
17+ private double helper (double x , int n ) {
18+ if (n == 0 ) return 1 ;
19+ if (n == 1 ) return x ;
20+ double d = helper (x , n >>> 1 );
21+ if (n % 2 == 0 ) return d * d ;
22+ return d * d * x ;
23+ }
24+
25+ public static void main (String [] args ) {
26+ Solution solution = new Solution ();
27+ System .out .println (solution .myPow (8.88023 , 3 ));
28+ }
29+ }
You can’t perform that action at this time.
0 commit comments