Skip to content

Commit f55f949

Browse files
solves prime arrangements
1 parent c4688c8 commit f55f949

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@
309309
| 1160 | [Find Words That Can Be Formed By Characters](https://leetcode.com/problems/find-words-that-can-be-formed-by-characters) | | |
310310
| 1165 | [Single Row Keyboard](https://leetcode.com/problems/single-row-keyboard) | [![Java](assets/java.png)](src/FindWordsThatCanBeFormedByCharacters.java) | |
311311
| 1170 | [Compare Strings By Frequency of the Smallest Character](https://leetcode.com/problems/compare-strings-by-frequency-of-the-smallest-character) | | |
312-
| 1175 | [Prime Arrangements](https://leetcode.com/problems/prime-arrangements) | | |
312+
| 1175 | [Prime Arrangements](https://leetcode.com/problems/prime-arrangements) | [![Java](assets/java.png)](src/PrimeArrangements.java) | |
313313
| 1176 | [Diet Plan Performance](https://leetcode.com/problems/diet-plan-performance) | | |
314314
| 1180 | [Count Substrings with only one Distinct Letter](https://leetcode.com/problems/count-substrings-with-only-one-distinct-letter) | | |
315315
| 1184 | [Distance Between Bus Stops](https://leetcode.com/problems/distance-between-bus-stops) | | |

src/PrimeArrangements.java

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
public class PrimeArrangements {
2+
private static final int[] PRIME_DENSITY = {
3+
0, 1, 2, 2, 3, 3, 4, 4, 4, 4,
4+
5, 5, 6, 6, 6, 6, 7, 7, 8, 8,
5+
8, 8, 9, 9, 9, 9, 9, 9, 10, 10,
6+
11, 11, 11, 11, 11, 11, 12, 12,
7+
12, 12, 13, 13, 14, 14, 14, 14,
8+
15, 15, 15, 15, 15, 15, 16, 16,
9+
16, 16, 16, 16, 17, 17, 18, 18,
10+
18, 18, 18, 18, 19, 19, 19, 19,
11+
20, 20, 21, 21, 21, 21, 21, 21,
12+
22, 22, 22, 22, 23, 23, 23, 23,
13+
23, 23, 24, 24, 24, 24, 24, 24,
14+
24, 24, 25, 25, 25, 25
15+
};
16+
17+
private static final int MOD = 1000_000_007;
18+
19+
public int numPrimeArrangements(int n) {
20+
final int primeNumbers = PRIME_DENSITY[n - 1];
21+
return factorialMod(primeNumbers, factorialMod(n - primeNumbers)) % MOD;
22+
}
23+
24+
private int factorialMod(long number, final long start) {
25+
long result = start;
26+
while (number > 1) {
27+
result = (result * number) % MOD;
28+
number--;
29+
}
30+
return (int) result;
31+
}
32+
33+
private int factorialMod(int number) {
34+
return factorialMod(number, 1);
35+
}
36+
}

0 commit comments

Comments
 (0)