File tree Expand file tree Collapse file tree 2 files changed +56
-0
lines changed
src/main/java/com/fishercoder/solutions Expand file tree Collapse file tree 2 files changed +56
-0
lines changed Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ Your ideas/fixes/algorithms are more than welcome!
20
20
21
21
| # | Title | Solutions | Time | Space | Difficulty | Tag | Notes
22
22
|-----|----------------|---------------|---------------|---------------|-------------|--------------|-----
23
+ | 625| [ Minimum Factorization] ( https://leetcode.com/problems/minimum-factorization/ ) | [ Solution] ( ../master/src/main/java/com/fishercoder/solutions/_625.java ) | O(?) | O(?) | Medium |
23
24
|624|[ Maximum Distance in Arrays] ( https://leetcode.com/problems/maximum-distance-in-arrays/ ) |[ Solution] ( ../master/src/main/java/com/fishercoder/solutions/_624.java ) | O(nlogn) |O(1) | Easy | Sort, Array
24
25
|623|[ Add One Row to Tree] ( https://leetcode.com/problems/add-one-row-to-tree/ ) |[ Solution] ( ../master/src/main/java/com/fishercoder/solutions/_623.java ) | O(n) |O(h) | Medium | Tree
25
26
|617|[ Merge Two Binary Trees] ( https://leetcode.com/problems/merge-two-binary-trees/ ) |[ Solution] ( ../master/src/main/java/com/fishercoder/solutions/_617.java ) | O(n) |O(h) | Easy | Tree, Recursion
Original file line number Diff line number Diff line change
1
+ package com .fishercoder .solutions ;
2
+
3
+ import java .util .ArrayList ;
4
+ import java .util .List ;
5
+
6
+ /**
7
+ * 625. Minimum Factorization
8
+ *
9
+ * Given a positive integer a, find the smallest positive integer b whose multiplication of each digit equals to a.
10
+
11
+ If there is no answer or the answer is not fit in 32-bit signed integer, then return 0.
12
+
13
+ Example 1
14
+ Input:
15
+ 48
16
+ Output:
17
+ 68
18
+
19
+ Example 2
20
+ Input:
21
+ 15
22
+ Output:
23
+ 35
24
+ */
25
+ public class _625 {
26
+
27
+ /**reference: https://discuss.leetcode.com/topic/92854/java-solution-result-array
28
+ * and https://leetcode.com/articles/minimum-factorization/#approach-3-using-factorizationaccepted*/
29
+ public int smallestFactorization (int a ) {
30
+ //case 1: a < 10
31
+ if (a < 10 ) return a ;
32
+
33
+ //case 2: start with 9 and try every possible digit
34
+ List <Integer > resultArray = new ArrayList <>();
35
+ for (int i = 9 ; i > 1 ; i --) {
36
+ //if current digit divides a, then store all occurences of current digit in res
37
+ while (a % i == 0 ) {
38
+ a = a /i ;
39
+ resultArray .add (i );
40
+ }
41
+ }
42
+
43
+ //if a could not be broken in form of digits, return 0
44
+ if (a != 0 ) return 0 ;
45
+
46
+ //get the result from the result array in reverse order
47
+ long result = 0 ;
48
+ for (int i = resultArray .size ()-1 ; i >=0 ; i --) {
49
+ result = result *10 + resultArray .get (i );
50
+ if (result > Integer .MAX_VALUE ) return 0 ;
51
+ }
52
+ return (int ) result ;
53
+ }
54
+
55
+ }
You can’t perform that action at this time.
0 commit comments