Skip to content

Commit 855ada5

Browse files
add 823
1 parent 734cb40 commit 855ada5

File tree

3 files changed

+69
-1
lines changed

3 files changed

+69
-1
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,8 @@ _If you like this project, please leave me a star._ ★
426426
|836|[Rectangle Overlap](https://leetcode.com/problems/rectangle-overlap/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_836.java) | [:tv:](https://youtu.be/o6hHUk4DOW0) |Easy|
427427
|832|[Flipping an Image](https://leetcode.com/problems/flipping-an-image/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_832.java) | |Easy|
428428
|830|[Positions of Large Groups](https://leetcode.com/problems/positions-of-large-groups/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_830.java) | |Easy|
429-
|824|[Goat Latin](https://leetcode.com/problems/goat-latin/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_824.java) | |Easy|
429+
|824|[Goat Latin](https://leetcode.com/problems/goat-latin/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_824.java) | |Easy|
430+
|823|[Binary Trees With Factors](https://leetcode.com/problems/binary-trees-with-factors/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_823.java) | |Medium|
430431
|821|[Shortest Distance to a Character](https://leetcode.com/problems/shortest-distance-to-a-character/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_821.java) | |Easy|
431432
|820|[Short Encoding of Words](https://leetcode.com/problems/short-encoding-of-words/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_820.java) | |Medium|
432433
|819|[Most Common Word](https://leetcode.com/problems/most-common-word/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_819.java) | |Easy| HashMap
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.fishercoder.solutions;
2+
3+
import java.util.Arrays;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
7+
public class _823 {
8+
public static class Solution1 {
9+
/**
10+
* credit: https://leetcode.com/problems/binary-trees-with-factors/discuss/126277/Concise-Java-solution-using-HashMap-with-detailed-explanation.-Easily-understand!!!
11+
*/
12+
long MOD = 1000000007l;
13+
14+
public int numFactoredBinaryTrees(int[] arr) {
15+
Arrays.sort(arr);
16+
Map<Integer, Long> map = new HashMap<>();
17+
long count = 1;
18+
map.put(arr[0], count);
19+
for (int i = 1; i < arr.length; i++) {
20+
count = 1;
21+
for (int key : map.keySet()) {
22+
if (arr[i] % key == 0 && map.containsKey(arr[i] / key)) {
23+
count += map.get(key) * map.get(arr[i] / key);
24+
}
25+
}
26+
map.put(arr[i], count);
27+
}
28+
long sum = 0;
29+
for (int key : map.keySet()) {
30+
sum = (sum + map.get(key)) % MOD;
31+
}
32+
return (int) sum;
33+
}
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.fishercoder;
2+
3+
import com.fishercoder.solutions._823;
4+
import org.junit.BeforeClass;
5+
import org.junit.Test;
6+
7+
import static org.junit.Assert.assertEquals;
8+
9+
public class _823Test {
10+
private static _823.Solution1 solution1;
11+
12+
@BeforeClass
13+
public static void setup() {
14+
solution1 = new _823.Solution1();
15+
}
16+
17+
@Test
18+
public void test1() {
19+
assertEquals(3, solution1.numFactoredBinaryTrees(new int[]{2, 4}));
20+
}
21+
22+
@Test
23+
public void test2() {
24+
assertEquals(9, solution1.numFactoredBinaryTrees(new int[]{2, 3, 4, 6, 9}));
25+
}
26+
27+
@Test
28+
public void test3() {
29+
assertEquals(25, solution1.numFactoredBinaryTrees(new int[]{2, 3, 4, 8, 16, 18}));
30+
}
31+
32+
}

0 commit comments

Comments
 (0)