Skip to content

Commit fa033bd

Browse files
solves #2644: RowWithMaximumOnes in java
1 parent 2d0fb15 commit fa033bd

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@
815815
| 2614 | [Prime In Diagonal](https://leetcode.com/problems/prime-in-diagonal) | [![Java](assets/java.png)](src/PrimeInDiagonal.java) | |
816816
| 2639 | [Find the Width of Columns of a Grid](https://leetcode.com/problems/find-the-width-of-columns-of-a-grid) | [![Java](assets/java.png)](src/FindTheWidthOfColumnsOfAGrid.java) | |
817817
| 2643 | [Row With Maximum Ones](https://leetcode.com/problems/row-with-maximum-ones) | [![Java](assets/java.png)](src/RowWithMaximumOnes.java) | |
818-
| 2644 | [Find the Maximum Divisibility Score](https://leetcode.com/problems/find-the-maximum-divisibility-score) | | |
818+
| 2644 | [Find the Maximum Divisibility Score](https://leetcode.com/problems/find-the-maximum-divisibility-score) | [![Java](assets/java.png)](src/RowWithMaximumOnes.java) | |
819819
| 2651 | [Calculate Delayed Arrival Time](https://leetcode.com/problems/calculate-delayed-arrival-time) | | |
820820
| 2652 | [Sum Multiples](https://leetcode.com/problems/sum-multiples) | | |
821821
| 2656 | [Maximum Sum With Exactly K Elements](https://leetcode.com/problems/maximum-sum-with-exactly-k-elements) | | |
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// https://leetcode.com/problems/find-the-maximum-divisibility-score
2+
// m: length of divisors
3+
// n: length of nums
4+
// T: O(m * n)
5+
// S: O(m)
6+
7+
import java.util.HashSet;
8+
import java.util.Set;
9+
10+
public class FindTheMaximumDivisibilityScore {
11+
public int maxDivScore(int[] nums, int[] divisors) {
12+
final Set<Integer> setDivisors = new HashSet<>();
13+
int maxDivisibilityScore = 0, minDivisor = Integer.MAX_VALUE;
14+
for (int divisor : divisors) {
15+
if (setDivisors.contains(divisor)) {
16+
continue;
17+
}
18+
setDivisors.add(divisor);
19+
final int divisorScore = getDivisorScore(nums, divisor);
20+
if (divisorScore > maxDivisibilityScore) {
21+
maxDivisibilityScore = divisorScore;
22+
minDivisor = divisor;
23+
} else if (divisorScore == maxDivisibilityScore) {
24+
minDivisor = Math.min(minDivisor, divisor);
25+
}
26+
}
27+
return minDivisor;
28+
}
29+
30+
private int getDivisorScore(int[] array, int divisor) {
31+
int count = 0;
32+
for (int element : array) {
33+
if (element % divisor == 0) count++;
34+
}
35+
return count;
36+
}
37+
}

0 commit comments

Comments
 (0)